前端技术文章
-
Fetch 使用 ReadableStream 作为请求体时,duplex: half 不是装饰参数,而是流式上传的必要声明。本文解释它的语义、代码写法、兼容边界与缓冲降级方案。270 收藏 -
文章 · 前端 | 2星期前 | 前端 · javascript · 异步编程 · JavaScript Promise.all Array.fromAsync 异步可迭代对象 AsyncIterable for await of
Array.fromAsync 可顺序读取异步可迭代对象并返回数组 Promise;本文用分页生成器讲清映射、错误、内存边界及与 Promise.all 的选择。236 收藏 -
文章 · 前端 | 2星期前 | html · 前端 · javascript · slot Web Components 服务端渲染 Declarative Shadow DOM shadowrootmode Shadow Root
服务端把 template shadowrootmode=open 作为宿主的直接子节点输出,浏览器解析 HTML 时即可建立 Shadow Root;客户端升级组件时复用已有根,只补事件和状态,而不是再次创建内部结构。227 收藏 -
文章 · 前端 | 2星期前 | 前端 · 性能监控 · javascript · 前端性能 PerformanceObserver INP Long Animation Frames API LoAF 卡顿脚本
使用 Long Animation Frames API 采集超过 50ms 的长帧,从 scripts 中按脚本地址、入口函数与字符位置聚合耗时,并区分脚本执行、强制布局和渲染开销。463 收藏 -
用 HTML Popover API 的 popover、popovertarget 与 JavaScript 方法实现非模态轻量弹层,并说明 CSS 状态样式、toggle 事件、dialog 边界和兼容降级策略。444 收藏 -
文章 · 前端 | 2星期前 | websocket · javascript · 异步编程 · JavaScript websocket AbortSignal 异步迭代器 Promise.withResolvers EventTarget
Promise.withResolvers 适合由外部事件决定完成时机的异步桥接:一次性 DOM 事件、带取消和超时的等待,以及将持续事件源改造成异步迭代器。本文给出监听器清理、解析器权限、消息队列、错误通道与兼容回退的生产写法。431 收藏 -
文章 · 前端 | 2星期前 | javascript · JavaScript Fetch AbortController 取消请求 AbortSignal.any AbortSignal.timeout
AbortSignal.any 可把用户取消、页面离开和超时合并为一个信号,任一来源中止时立即停止 fetch。本文说明首个 reason、已中止输入、错误分类、监听器清理和兼容边界。174 收藏 -
讲清 scheduler.yield 如何把浏览器长任务拆成可恢复的小段,给出批次处理、时间预算、兼容后备与 Web Worker 选择方法。255 收藏 -
用一个同源多页网站实例讲清跨文档 View Transition:双端开启、旧新快照、共享元素命名、自定义动画、减少动态效果适配与常见失效排查。181 收藏 -
CSS Style Container Query 可以读取父级自定义属性,让组件后代按密度、主题或布局状态切换样式。本文说明 style() 的无值与带值查询、@property 类型化比较,以及继承和浏览器支持造成的不生效问题。440 收藏 -
Vue 中的图表、编辑器、地图等第三方实例通常不需要深度响应式。本文说明如何用 shallowRef 只跟踪根引用,把创建、方法调用、视图状态同步和销毁集中到 composable,并区分 triggerRef、markRaw 与普通 ref 的适用边界。246 收藏 -
本文用搜索列表案例拆分 React 中必须立即响应的交互状态与可中断的后台渲染,说明 useTransition、isPending、受控输入、异步更新和 Suspense 的正确边界。112 收藏 -
Vite 依赖预构建异常通常涉及依赖指纹、node_modules/.vite 与浏览器强缓存三层。本文给出 --force、optimizeDeps 与 monorepo 链接包的顺序化排查方法。451 收藏 -
通过稳定的 id、aria-describedby 和 aria-invalid 关联表单帮助文本与错误提示,说明动态校验、可见状态和复杂内容边界。349 收藏 -
CSS :is() 自身不增加权重,但会采用参数列表中最高 specificity。本文通过计算示例说明 ID 分支如何抬高整条规则,并给出同权重分组、:where()、拆分例外与 cascade layer 的控制方法。327 收藏