文章

关于前端工程、基础设施、AI 工具链的思考与记录。

2026
tutorial2026-07-04

React 19 + Next.js 16:三个 lint 错误如何引发 hydration mismatch

从 eslint error 到 dev 模式零报错,修复 client boundary 的实战经验

tutorial2026-07-04

Next.js Layout 重新挂载导致的主题闪烁:根因与完美解法

为什么切换语言时明亮模式会闪烁黑屏,以及用 React 状态同步 DOM 属性的 workaround

tutorial2026-07-04

Next.js 博客国际化:内容层与 UI 层的分离架构

两套独立的 i18n 体系如何协作,以及在 URL、阅读时间、Sitemap、SEO 上踩的坑

tutorial2026-07-04

Mermaid 图表:Remark 层 AST 改写与客户端渲染

在 Expressive Code 吃掉所有代码块之前,用 remark 插件把 mermaid 节点偷走

tutorial2026-07-04

MDX 组件架构:行内代码检测、图片 Lightbox 与动态导入

一个 mdx-components.tsx 背后的三个不显眼但关键的设计决策

tutorial2026-07-04

Expressive Code × React 19:脚本注入的三层 workaround

从 rehype 树剥离 script,到 Server Component 重注入,再到 Client 端 hydration 骗术

tutorial2026-07-04

深浅主题全站适配:从 CSS 变量到 Canvas 粒子

一个主题切换按钮,要协调 5 个彼此独立的子系统

tutorial2026-06-07

MDX 文章目录:从 rehype 提取到吸顶布局的踩坑记录

rehype-extract-toc、Portal 修复 fixed、以及「正文第一行到达才吸顶」的滚动逻辑

tutorial2026-06-07

MDX 能力演示

GitHub Alerts、数学公式、GFM 扩展与媒体嵌入

tutorial2026-06-07

Next.js App Router 页面切换动画:踩坑与最终方案

为什么 AnimatePresence 会闪、template.tsx 没效果,以及 pathname 作 key 为什么能 work