React AI 长会话虚拟化:动态高度、滚动锚定与 CLS 门禁
AI 消息包含代码、引用和延迟加载内容,普通定高虚拟列表会在回填历史时跳动。本文用稳定消息键、高度修正、显式锚点与真实浏览器夹具约束 DOM 和滚动漂移。
Next.js、React、TypeScript、前端工程化
本专题收录 Web 开发 方向的文章和社区讨论,重点关注真实工程场景、工具选择、实践路径和风险边界。
页面会持续更新,适合作为学习路线、选型参考和技术复盘入口。
AI 消息包含代码、引用和延迟加载内容,普通定高虚拟列表会在回填历史时跳动。本文用稳定消息键、高度修正、显式锚点与真实浏览器夹具约束 DOM 和滚动漂移。
功能测试不抓"布局塌了/颜色变了/字号错了"——这些只有视觉回归能抓。本文讲清 VRT 原理(截图+像素对比+diff)、工具选型(Playwright screenshots/Chromatic/Percy)、阈值调优、CI 集成,以及"别让 VRT 成噪声制造机"。
网络超时、用户双击、自动重试——同一请求可能发多次。幂等设计让"同一操作执行 N 次结果一致"。本文讲清幂等的本质(GET 天然幂等 vs POST 不幂等)、实现手段(Idempotency Key + 去重表)、支付/下单等关键场景的幂等保证,以及幂等与并发的配合。
GraphQL 的 schema 就是 API 的契约——设计好 schema 比写好 resolver 更重要。本文讲清 schema 设计原则(类型优先/描述/分页 Connection/枚举 vs 字符串)、resolver 的 DataLoader 解决 N+1、schema 版本化与废弃,以及"什么时候用 GraphQL 什么时候别用"。
Ref 不只是"引用 DOM"——在组件库里它决定 API 体验。本文讲清 useRef(值容器/不触发重渲染)、forwardRef(转发 ref 给子组件)、useImperativeHandle(暴露受控 API)、ref callback,以及 React 19 的 ref as prop(不用 forwardRef 了)。
暗色模式不是简单反转颜色——要处理系统偏好跟随、手动切换、持久化、闪烁(FOUC)、图片/图标适配。本文讲清 prefers-color-scheme 媒体查询、class 切换策略、localStorage 持久化、防闪烁脚本、CSS 变量主题系统,给一套完整的暗色模式方案。
用户遇到白屏但你不知道——Sentry 在用户遇到错误前就帮你抓到。本文讲清前端错误追踪:Sentry SDK 集成、Error Boundary 捕获、source map 上传(生产定位到源码行)、release 追踪、性能监控、隐私脱敏。
新 Service Worker 安装成功不等于可以立刻接管旧页面,skipWaiting 还可能让旧客户端读到新协议缓存。本文用闭合发布清单、客户端握手和分代清理控制激活窗口。
a11y 不靠人肉测——有一套成熟的自动化工具。本文讲清四层 a11y 测试:lint(eslint-plugin-jsx-a11y)、自动扫描(axe-core/Lighthouse)、E2E 集成(@axe-core/playwright)、屏幕阅读器实测(VoiceOver/NVDA),以及 CI 门禁配置。
Web Push 让你的网站能像 App 一样推送通知——即使用户没开网页。本文讲清 Web Push 的三件套(VAPID 密钥 + Push API + Service Worker)、订阅/发送/接收流程、权限请求体验、以及"用户没开浏览器也能收到推送"的原理。
按帧合并只能减少 commit 次数,不能降低一次 commit 的 Markdown 工作量。本文用封口块、延迟富化和确定性重放约束解析成本与最终语义。
传统 SSR 等所有数据返回才发 HTML——慢接口拖累全页。Streaming SSR 边渲染边发,Suspense 标记"这里先给 loading,数据好了再流式替换"。本文讲清 Streaming SSR 的原理、Suspense 在 SSR 的角色、Next.js App Router 的流式渲染、选择性 hydration,以及它怎么让 LCP 不再被最慢的组件阻塞。