-
Diff算法处理插槽的核心是父组件决定slots引用是否变更,触发子组件重新render并执行自身diff;插槽VNode惰性生成、不跨patch复用,更新严格遵循父先子后时序。
-
scrollIntoView默认为instant行为,需显式传入{behavior:'smooth'}才有动画;注意IE不支持,DOM未就绪或id不匹配会导致target为null,应加防御性判断;固定头部遮挡时可用scroll-margin-top或block参数调整;频繁点击需防抖或await前序滚动。
-
Bootstrap.badge垂直对齐需按场景定制:按钮内用vertical-align:text-bottom加微调,混排推荐inline-flex容器,表格中确保td未重置vertical-align,SVG场景需先清除内联对齐。
-
支配者树是反映“谁不释放谁就无法被回收”的逻辑结构,直接定位导致内存峰值的顶层支配对象;其RetainedSize越大,说明该对象锁死的内存越多,往往是泄漏源头或误缓存根节点。
-
TextDecoder解码Uint8Array最轻量高效:一次性解码用response.arrayBuffer()转Uint8Array后decode;流式需复用实例并启用{stream:true},末次调用decode()清缓冲。
-
BEM结构应分层:.select为容器,.select__trigger为点击区,.select__list为面板,.select__option为选项;选中态用.select__option--selected,组件激活态用.select--open或.select--focused。
-
不是必须,但强烈建议用<thead>包裹表头;它提升语义化、可访问性及打印/滚动时表头重复显示能力,WCAG和主流UI库均要求该结构。
-
margin-left:auto靠右生效的前提是元素处于干净的flex上下文:父容器需为display:flex且未被justify-content等覆盖,目标元素须为直系子项、无DOM干扰节点,并在flex-direction:row下使用。
-
mailto链接点开没反应,主因是参数含未编码的中文、空格、换行或符号导致浏览器截断;收件人含空格或全角字符也会失败;部分环境(如iOSPWA、企业Android平板)未注册默认邮件客户端而静默丢弃。
-
WCAG2.1要求普通文本对比度≥4.5:1,需用工具验证而非目测;避免opacity降背景色,深色模式与prefers-contrast需同步调整背景与文字色,hsl()变量可联动控对比度。
-
Props本身不支持防抖,因其是被动接收的数据通道;真正需防抖的是子组件中基于props变化触发的副作用逻辑,如请求、计算或DOM更新,应通过watch+防抖函数或上移至父组件实现。
-
document.execCommand已废弃,Chrome93+等主流浏览器默认禁用,调用返回false且无提示;根本原因是标准移除,非配置问题,迁移应改用Selection+RangeAPI或现代编辑器如tiptap。
-
contain:layout能隔离子元素布局变化对父容器的影响,避免父级重排;但禁用height:auto等依赖内容的尺寸计算,且不适用于flex/grid容器。
-
Terser是现代JavaScript压缩的默认选择,UglifyJS因不支持可选链、空值合并等新语法且压缩率低而被淘汰;Webpackv5+已内置Terser,无需安装uglifyjs-webpack-plugin,应通过terserOptions自定义配置。
-
必须用语义化标签(如<nav><main><aside>)而非div,因其承载区域意图、支撑无障碍与SEO;布局宜用显式grid而非grid-template-areas防命名冲突;卡片内元素用flex对齐;编辑态应复用节点而非替换DOM。