前端技术文章
-
事件监听器未清理是内存泄漏的直接原因,需用ChromeMemory面板检测detached节点及EventListeners数量增长,推荐AbortController配合signal自动解绑,尤其注意window/document监听器和React/Vue卸载时的清理时机。367 收藏 -
应使用btnis-loading表达按钮加载状态,其中is-loading是语义清晰、块级归属的状态修饰符,需与块名组合使用、限定作用域、避免泛匹配,并遵循声明式设计原则。367 收藏 -
路由守卫是前端权限控制第一道防线,仅做可见性过滤和轻量准入检查,核心权限必须由后端接口返回并校验;适合拦截未登录访问、角色无权路由及动态菜单过滤,不适用于接口权限、字段级控制或绕过地址栏的假安全。367 收藏 -
优先选用明确标注“CORSenabled”的天气API(如open-meteo.com),否则须通过后端代理中转,禁在前端硬编码Key;渲染时用textContent防XSS,IP定位需合规提示并提供手动修正入口。367 收藏 -
Stylelint保存时自动修复不生效,主因是VSCode格式化链路冲突或customSyntax未配置;应关闭editor.formatOnSave、启用stylelint.autoFixOnSave,确保安装官方插件、配置匹配的customSyntax及可修复规则。367 收藏 -
Set和Map是ES6专为去重/存在性判断与灵活键值映射设计的原生集合类型;Set自动去重、O(1)查询、支持集合运算;Map支持任意类型键、保持插入顺序、无原型污染,语义清晰且性能更优。367 收藏 -
WebStorm中图片对齐失效的主因是display与vertical-align组合不当、Flex父容器缺失display:flex、路径解析错误及盒模型干扰;应优先用Elements面板检查computed样式,再针对性调整。367 收藏 -
服务端主动关闭WebSocket必须走RFC6455关闭帧流程:先发CLOSE帧、等待对端响应、再关底层连接;直接调用close()或terminate()会导致1006异常断开,生产环境严禁用terminate()主动下线,仅限恶意帧拦截或超时强制清理。366 收藏 -
width变化不触发transition需确保元素有明确数值宽度(非auto)、写在默认状态而非hover中、行内元素设为block/inline-block;优先用max-width或flex-basis替代width过渡。366 收藏 -
用Map实现撤销/重做,核心是将其作为“操作-快照”索引层,键为操作ID或类型序号,值存深拷贝状态、diff摘要或命令对象,避免引用污染;更新严格匹配用户显式意图,还原时协同past/future指针精准定位。366 收藏 -
选框架前需明确项目功能需求,小页面或已有设计系统时无需完整CSS框架;Bootstrap提供预设组件和JS交互,Tailwind是原子类工具集,二者适用场景不同。366 收藏 -
Object.is能区分+0和-0是因为其按IEEE754位模式严格比较,故Object.is(+0,-0)返回false;同时它使Object.is(NaN,NaN)为true,更符合相等直觉。366 收藏 -
HTML本身不提供视频转场选择面板,因其无内置转场库或图形界面,所有转场效果均依赖CSS动画、JS逻辑及视频元素叠加实现;浏览器仅解析video标签并执行CSS/JS,不理解“淡入淡出”等语义,更不会弹出预览菜单。366 收藏 -
在Safari中用appearance:none移除checkbox默认样式可行,但必须搭配::before或::after伪元素重绘且显式设置display:block(或inline-block),否则伪元素不渲染——这是Safari独有的坑。366 收藏 -
首帧延迟需前后端协同测量:前端记录play()到loadeddata的时间差,后端记录RTSP连接建立至首个RTP包发出的时间戳;WebRTC方案实测可压至300–600ms。366 收藏