CSP 管得住脚本从哪个域加载,管不住页面自己往 innerHTML 里塞了什么字符串。Trusted Types 把危险 DOM Sink 的写入变成浏览器强制审查,这篇讲它的机制、落地代码和撞见的真实麻烦。
团队要做一个多人协同编辑的功能,传统的后端合并冲突加乐观锁在多人同时改同一段内容时很难写干净;记录一下改用 CRDT、用 Yjs 落地协同文档的过程,以及这套方案要付出的代价。
Svelte 4 的响应式声明依赖编译期静态分析,没法在组件外的普通模块里复用;Runes 用 `$state`、`$derived`、`$effect`、`$props` 这套显式 API 解决了这个问题,这篇记录我们把内部发布看板一部分模块迁移到 Runes 后的具体判断。
几十万个点位的散点图在 Canvas 2D 下卡到没法交互,换 WebGL 也只是把卡顿从主线程挪到了每帧几千次 draw call 上——记录我排查这个瓶颈、最终用 WebGPU 的 Compute Shader 重写数据聚合逻辑的过程。
评估一个离线优先的文档编辑器要不要把数据存进浏览器时,IndexedDB 的异步 API 在高频写入场景下写起来啰嗦、性能也一般,OPFS 提供的同步访问句柄和更接近真实文件的操作方式是另一条路,这篇讲清楚它的存储模型、权限模型、和 IndexedDB/Cache Storage 的分工,以及配额和数据清除时该怎么应对。
Speculation Rules API 能让浏览器提前预取甚至预渲染下一跳页面,比 link rel=prefetch 和悬停预加载库更进一步,但预渲染错页面会白白浪费带宽,预渲染有副作用的页面还可能提前触发埋点或写操作,这些代价得先算清楚。
长任务把主线程堵住的时候,setTimeout(fn, 0) 和 requestIdleCallback 都救不了场——scheduler.postTask() 的优先级参数和 scheduler.yield() 的循环内让出,才是浏览器原生给出的任务调度方案。
light-dark() 函数和 color-scheme 属性能不能替换项目里现有的暗色模式实现,这篇给出具体判断标准:暗色变量数量、是否依赖 data-theme 做第三方组件适配,以及原生表单控件、滚动条怎么借 color-scheme 自动换色。
记录给后台表格行加一个操作菜单时,把原本要手写的 z-index、点击外部关闭、Esc、焦点管理和定位计算,逐步换成 popover 属性、dialog 元素和 CSS 锚点定位的过程,附选型判断和可运行代码。
Date 对象在时区、夏令时和月份索引上的历史包袱一直没解决,这篇讲 TC39 Temporal API 的对象设计、时区处理方式、不可变性的实际收益,以及在账单周期计算这类场景里落地的判断过程。
shadcn/ui 不发 npm 包、直接把组件源码装进你的仓库。聊聊这种 copy-in 模式的好处、维护成本、和传统组件库(Antd/MUI)的取舍。
AI 写出的代码在单文件里看着挺对,一放进真实仓库就出问题——记录几条实用习惯:先喂上下文和约束、先让它读代码拆计划、每轮改完必测,以及上下文窗口、工具调用、评测这些容易被略过的细节。
页面不大、主线程也不忙,首屏却迟迟不出来——把 TTFB、FP、数据包、IP、TCP 握手这些网络层细节和前端性能连起来讲清楚。
Zod 4 的性能改进和 API 变化落到真实项目里:表单校验、接口出入参解析、和 TypeScript 类型互推,以及 schema 复用时容易踩的坑。
大型前端项目的类型检查、编辑器响应和 CI 等待为什么会拖慢反馈链路,以及我会怎么评估 TypeScript 7 Beta(Go 重写)的性能收益和升级风险。
不可变数据、资源管理、新语法这些 ES2026/ESNext 能力,怎么判断它什么时候能真正进业务代码:分清标准阶段、核对工具链转译和 polyfill 成本。
把项目的 lint 和格式化从 ESLint+Prettier 换成 Biome 的过程:速度提升有多明显、规则迁移缺了什么、以及哪些场景我还是留着 ESLint。
同文档 View Transitions 之外,跨文档(MPA)过渡终于可用。记录我给一个传统多页站点加上页面切换动画的过程、view-transition-name 的配对和降级处理。
原生嵌套和 @scope 落地后,我在项目里逐步去掉一部分 Sass 的过程:嵌套的坑、@scope 的下边界 donut scope、以及现在还不能完全替代预处理器的地方。
qiankun 的 JS 沙箱怎么隔离子应用的全局变量污染:拆解 ProxySandbox 和 LegacySandbox 为什么要设计 fakeWindow、with、函数绑定和生命周期补丁。
从 Vue ref、Solid signal 到 TC39 的 Signals 提案,聊聊信号这套响应式模型解决了什么、polyfill 怎么用、以及它和现有框架的关系。
用过一段时间 TanStack Router 后的复盘:文件式与代码式路由、search params 的类型校验、loader 数据预取,以及它和 React Router 的取舍。
Rolldown 把 Vite 的打包从 esbuild/Rollup 双引擎统一成一套 Rust 实现,记录我在中型项目里切过去的体感、兼容性问题和回退策略。
从 v3 升到 v4 的真实迁移过程:Oxide 引擎带来的速度变化、配置从 JS 搬到 CSS、@theme 和 CSS 变量怎么用,以及几个升级时踩的坑。
记录把 React Compiler 接入一个真实项目的过程:它替我做了哪些手动 memo 化、哪些写法会让它直接放弃优化、以及上线前怎么验证它没改坏行为。