近期,Vue框架的创始人尤雨溪在社交媒体上公开推荐了Vue3生态中的一个新项目——markstream-vue。这一推荐迅速在社区引发热议,许多开发者认为这是专为AI时代设计的原生流式渲染库。

更值得关注的是,最新的AI Elements Vue组件库已正式将markstream-vue作为底层流式渲染引擎投入应用。这意味着未来所有基于Vue的AI应用都能实现字节级的实时渲染体验。

从 vue-renderer-markdown 到 markstream-vue:一次正式升级
此前,社区中曾有一个名为vue-renderer-markdown的库。如今,它升级为markstream-vue,定位更加清晰:专为AI流式Markdown渲染而生。这不仅是名称的变更,更是功能与性能的全面进化。
markstream-vue 特性

- ⚡ 极致性能:针对流式场景最小化重渲染,DOM更新高效
- 🌊 流式优先:原生支持不完整或频繁更新的Markdown内容
- 🧠 Monaco流式更新:大代码块也能平滑增量高亮
- 🪄 渐进式Mermaid:语法一够就渲染,后续持续优化
- 🧩 自定义组件:可在Markdown中直接嵌入Vue组件
- 📦 零配置:Vue 3项目里开箱即用
增量 DOM 更新

markstream-vue将Markdown内容先切分为token流,再映射为Vue VNode的差量patch。简单来说,新token到来时只插入对应节点,旧节点保持不动,从而优化渲染效率。
例如,在AI输出经常“断句”的场景下:
# 标题
1. 第一
2. 第二
当第二行尚未完整时,库能先渲染出标题和第一条内容,后续内容逐步补充。
三大区块做特殊流式优化
markstream-vue针对代码块、Mermaid图表和KaTeX数学公式进行了特殊优化:
- 代码块:集成Monaco编辑器,支持增量语法高亮;即使数千行代码也能平滑滚动,避免整屏刷新。
- Mermaid图表:语法一旦满足基本要求即渲染草图,后续内容边补充边优化。
- KaTeX公式:支持逐段排版,避免长公式导致的整行跳动。
代码块效果

数学公式效果

Mermaid效果

快速上手
安装markstream-vue:
npm i markstream-vue
在Vue组件中使用:
<template>
<MarkdownRenderer :stream="chunk" />
</template>
<script setup>
import { ref } from 'vue'
import MarkdownRenderer from 'markstream-vue'
const chunk = ref('')
const evtSource = new EventSource('/api/ai-stream')
evtSource.onmessage = (e) => {
chunk.value += e.data // 逐句追加
}
</script>
零配置即可实现内容平滑渲染,每次chunk更新都会在界面中实时显示。
实测效果对比
| 场景 |
传统 markdown-it |
markstream-vue |
| 3000行代码块 |
1.2秒卡顿加闪屏 |
60fps平滑滚动 |
| Mermaid大图 |
重绘3次、错位 |
一次渲染、渐进优化 |
| 长数学公式 |
整页跳动 |
行内增量排版 |
结语
从markdown-it到markstream-vue,Vue生态在流式渲染领域实现了显著突破。AI时代的内容生成是流式的,渲染也必须跟上这一趋势。下次需要实现类似ChatGPT的逐字渲染效果时,直接尝试markstream-vue即可。
npm i markstream-vue
|