前端技术文章
-
用Map实现撤销/重做,核心是将其作为“操作-快照”索引层,键为操作ID或类型序号,值存深拷贝状态、diff摘要或命令对象,避免引用污染;更新严格匹配用户显式意图,还原时协同past/future指针精准定位。366 收藏 -
width变化不触发transition需确保元素有明确数值宽度(非auto)、写在默认状态而非hover中、行内元素设为block/inline-block;优先用max-width或flex-basis替代width过渡。366 收藏 -
服务端主动关闭WebSocket必须走RFC6455关闭帧流程:先发CLOSE帧、等待对端响应、再关底层连接;直接调用close()或terminate()会导致1006异常断开,生产环境严禁用terminate()主动下线,仅限恶意帧拦截或超时强制清理。366 收藏 -
WebSocket 断线后,如果每个页面都立即重连,网络抖动会迅速变成重连风暴。本文从连接状态、指数退避、随机抖动和页面可见性恢复入手,给出一套可观察、可停止、能回滚的前端重连方案。366 收藏 -
用 CSS @scope 给卡片组件划定样式边界,讲清嵌套 scope、to() 限制、scoping proximity 与不支持浏览器的降级检查。366 收藏 -
JavaScript中对象需实现迭代器协议(即拥有返回{value,done}对象的[Symbol.iterator]方法)才支持for...of等操作;普通对象默认不满足,可通过生成器函数简洁实现,自动处理状态与惰性求值。365 收藏 -
WebSocket 上线后常见问题不是连接不上,而是断线后状态混乱、消息丢失、重复重连。本文按完整工作流拆解心跳检测、退避重试、恢复订阅和离线消息补发。365 收藏 -
核心是用watch监听表单快照差异,需在页面加载后立即用structuredClone或JSON.stringify获取初始快照,配合deep:true监听整体变化,用lodash/isEqual或类型标准化比对,提交后同步更新initialForm并重置isDirty。364 收藏 -
作用域链确定变量查找路径,变量提升使var声明前置但不初始化,暂时性死区阻止let/const在声明前访问,三者共同影响JavaScript变量行为。364 收藏 -
应避免用@supports(box-sizing:border-box)检测,因其在所有现代浏览器(含IE8+)中恒为true;需转而结合布局特性(如display:grid/flex)与盒模型行为联合检测,或采用运行时计算值验证及针对性CSS重置策略。364 收藏 -
双工流可实现边读边写的数据转换,通过继承stream.Duplex并实现_write和_read方法,结合this.push推送处理后数据,适用于大文件处理等内存敏感场景。364 收藏 -
charAt()是ECMAScript3标准方法,IE6–8等旧环境原生支持,而str[i]在其中返回undefined或报错;其对负数或越界索引均统一返回空字符串"",语义明确、行为稳定。364 收藏 -
在基于CSS动画的简易横版跳跃游戏中,为角色添加“蹲下”功能时,若未正确设置定位上下文,可能导致障碍物位置异常偏移;根本原因在于position:relative的父容器缺失,使子元素的top动画产生全局位移干扰。364 收藏 -
浏览器右键“另存为”仅保存HTML文档本身,不包含CSS、JS、图片等外部资源,导致样式错乱、功能失效;Chrome/Edge默认保存为“Webpage,Complete”但受限于同域和静态资源,Firefox默认仅保存HTML;curl/wget适用于获取原始HTML源码,Puppeteer可保存JS渲染后的完整DOM。364 收藏 -
在Vue2中,直接修改数组中对象的属性(如item.price=...)不会触发视图更新;必须用this.$set显式通知Vue数据变化,且需作用于响应式数组的索引位置,而非对象内部。364 收藏