流式 Markdown 渲染完全指南【引子】

0 阅读4分钟

写在前面:一个流式输出的前端问题

引子:从一道面试题说起

“假设 AI 正在流式输出一段 Markdown,你如何实现页面不闪烁?”

这是我最近在不同技术社区频繁看到的一道面试题。问法各异,但核心指向同一个技术命题:

  • 有候选人回答:用 marked.js 每段 parse 一下
  • 面试官追问:那加粗 **j 同时到达时,页面为什么会闪?
  • 候选人沉默,面试结束

这个故事并非虚构。随着 AI 应用井喷式爆发,“流式 Markdown 渲染”已经从一个小众的边缘场景,变成了每个 AI 前端团队必须面对的核心基础问题

我们所处的时代背景

2023 年 ChatGPT 横空出世,带火了“流式输出”这个交互模式。到 2026 年,几乎所有 AI 应用——对话机器人、代码生成器、AI 写作助手、智能客服——都在使用流式传输。

用户体验的评判标准也随之改变:

旧标准:内容正确即可。
新标准:逐字流畅、无闪烁、无卡顿、像真人打字一样丝滑。

这个看似简单的诉求,背后却涉及:

  • HTTP/SSE/WebSocket 协议的理解
  • 浏览器渲染机制与性能优化
  • Markdown 语法规范的深度剖析
  • 有限状态机的设计模式
  • 生产级架构的分层设计
  • 开源工具链的选型与集成

这是一个打通“前端基础知识”与“AI 应用实战”的绝佳工程场景。

这个系列能给你带来什么?

市面上的技术文章,要么只讲“怎么用 Streamdown”,要么只讲“为什么闪烁”,很少有系统性地、从 P5 到 P7 逐层递进地讲透整个问题域。

这个系列不同

① 追根溯源,讲透本质

第 1 篇会回答:为什么“每段 parse”一定会闪?从 Markdown 语法特性、流式数据结构到浏览器 DOM 更新机制,一次性讲清楚。

② 逐层递进,覆盖 P5 到 P7

这不是一篇“科普文”,而是一套完整的工程化认知升级路径:后续下面五篇文章会陆续更新,目前可能点击找不到,说明还没有发布,请关注,及时接收到后续通知

篇目核心地址
读完第 1 篇你理解了问题的本质审阅
读完第 2 篇你能手写一个缓冲渲染器审阅
读完第 3 篇你能用状态机解决代码块难题审阅
读完第 4 篇你掌握了 2026 年的标准化工具链审阅
读完第 5 篇你具备构建生产级架构的能力审阅

③ 有理论,有代码,有场景

每一篇都包含:

  • 问题驱动:从一个真实场景出发
  • 原理剖析:为什么会出现这个问题
  • 方案落地:完整的可运行代码
  • 局限分析:这个方案解决不了什么

④ 对标职级,看到成长路径

每篇文章标注了对应的职级水平(P5 → P5+ → P6 → P6+ → P7),让你清晰看到自己在什么阶段,下一步该往哪里走。

本系列适合谁读?

  • ✅ 正在开发 AI 对话应用的前端工程师
  • ✅ 准备面试大厂、想系统提升工程能力的求职者
  • ✅ 对浏览器渲染性能感兴趣的技术爱好者
  • ✅ 想从“写页面”升级到“做架构”的进阶开发者

如果你属于以上任何一类,这个系列值得你花时间读完。

关于我为什么写这个系列

在过去的两年里,我深度参与了多个 AI 产品的研发,每一次上线都伴随着流式 Markdown 渲染的踩坑和重构。从最初的“能用就行”,到后来的“极致体验”,我走过很多弯路,也积累了不少经验。

如今,AI 应用已经从“新奇玩具”变成“生产力工具”,用户对体验的要求只会越来越高。流式渲染的稳定性、流畅度、性能,不再是“锦上添花”,而是“生死线”。

我希望把这些经验系统性地整理出来,让后来者少踩一些坑,也让这个领域有一个相对完整的技术参考。


系列开篇,我们从一个最简单的例子开始。

下一章,你将看到一段只有 3 行的 Markdown,如何在流式传输中引发页面“地震”——以及,这背后到底发生了什么。

第 1 篇预告:问题的本质——为什么“每段 parse”会闪?