前端技术文章
-
搜索框快速输入时,慢请求可能晚于新请求返回,旧结果就会覆盖当前关键词。本文用请求序号、AbortController 和有限并发预算拆解竞态边界,并给出取消、回收和键盘操作下的验收办法。260 收藏 -
ResizeObserver 能监听元素尺寸变化,但在回调里直接改写被观察元素,很容易形成反复触发。本文用 contentRect、宽度阈值和 disconnect 拆开这类死循环的边界,给出可审查的组件写法与发布前检查清单。257 收藏 -
用原生 Popover API 做一个可点击外部关闭的帮助菜单,说明 popover=auto、beforetoggle 与 toggle 的职责差异,并用键盘焦点和 Esc 关闭行为完成验收。256 收藏 -
TypeScript satisfies 不需要独立配置项。本文从版本与构建解析器开始,说明如何约束配置对象并保留具体推断,再用最小 tsc 检查定位常见报错。254 收藏 -
CSS :has() 可以根据子元素或后续兄弟的状态设置父级样式,但要同时处理浏览器回退、特异性和 DOM 检查范围。本文用表单卡片场景给出可直接采用的写法。252 收藏 -
CSS 容器查询从尺寸条件扩展到 style() 条件后,迁移重点不只是替换语法,还要检查容器类型、继承来源、浏览器支持和响应式回归。251 收藏 -
Service Worker 更新后仍读到旧文件,通常不是浏览器拒绝更新,而是新 worker 还在 waiting、页面仍由旧 controller 控制,或 fetch 代码继续命中旧的 Cache Storage。本文用版本化缓存、activate 清理和可控接管方式排查这个边界。251 收藏 -
通过 Web Worker 的 postMessage 和 Transferable 转移 ArrayBuffer,掌握所有权交接、detached 状态、TypedArray 视图与常见排查边界。249 收藏 -
AbortController 取消 fetch 后,Response 可能已经拿到但响应体还没读完,继续调用 text 或 json 就会抛出 AbortError。本文给出取消判断、单次消费响应体、区分网络失败与请求竞态的实用写法。248 收藏 -
Vite 同一主版本的不同分支不一定获得相同维护。本文依据官方当前支持矩阵,说明 8.2、8.1、7.3、8.0 与 6.4 分支分别能获得哪些补丁,以及如何从 lockfile 确认实际版本并选择升级路径。247 收藏 -
Vue 3 使用 provide/inject 传递跨组件状态时,字符串键容易让类型变成 unknown 或 undefined。本文用 InjectionKey 绑定上下文类型,并说明 readonly、必需注入、可选注入和默认值的边界。247 收藏 -
用模板字面量类型生成 xxxChanged 事件名,并通过泛型与索引访问类型让回调参数跟随属性类型推导,最后说明动态字符串和可选属性的边界。247 收藏 -
fetch 请求被取消时,AbortController.abort(reason) 可以把用户主动切换、超时和页面离开区分开。本文用一个可运行的请求封装说明 reason 的传递、catch 判断和兼容边界。246 收藏 -
前端搜索框快速输入时,旧请求可能晚于新请求返回并覆盖结果。本文用 AbortController 取消无效请求,再用请求序号保护结果提交,给出异常处理、signal 复用和 debounce 的边界方案。242 收藏 -
CSS position sticky 不生效时,优先检查最近的滚动机制祖先、滚动轴、top 阈值和父级可用空间,按清单快速定位参照容器问题。241 收藏