目录
-
- 一、概述:迎接AI原生应用的流式渲染时代
- 二、核心概念与优势对比
-
- 各方案核心优势对比
- 三、环境配置与安装
-
- 3.1 React项目:使用 Ant Design X
- 3.2 Vue项目:使用 Element Plus X
- 3.3 Vue项目:使用 markstream-vue (轻量选择)
- 四、快速上手教程
-
- 4.1 React + Ant Design X 示例
- 4.2 Vue 3 + Element Plus X 示例
- 4.3 Vue 3 + markstream-vue 示例 (极简流式)
- 五、核心功能详解
-
- 5.1 插件系统与富内容渲染
- 5.2 极致自定义与安全性
- 5.3 主题与样式
- 六、高级应用与最佳实践
-
- 6.1 性能优化
- 6.2 错误处理与用户体验
- 6.3 与状态管理集成
- 七、写在最后
一、概述:迎接AI原生应用的流式渲染时代

在过去两年中,大模型驱动的AI应用已成为常态,无论是对话、编程还是报表场景,都需要处理AI模型“边想边说”的流式输出。传统的Markdown渲染器“等全文、再渲染”的模式在面对逐字(Token)产生的AI流时已彻底失效。流式渲染已成为新一代AI产品的核心需求。
Ant Design X 推出的 AI流式渲染引擎(核心组件为XMarkdown),正是为应对这一挑战而生的解决方案。它基于Ant Design团队为“通义千问”、“钉钉AI”等大型AI产品打磨多年的内核,提供了零依赖、开箱即用的流式渲染能力。
本文档将结合其官方介绍,详细说明如何在React、Vue等项目中,使用这套引擎来优雅、高效地渲染AI流式内容。

二、核心概念与优势对比
Ant Design X AI流式渲染引擎的核心是实现**“边接收、边渲染”**,其本质是一种基于分片和缓存补丁的增量渲染技术。新Token到来时,仅更新需要变化的“最后一行”,从而在保障60fps流畅视觉体验的同时,避免屏幕的闪烁。
各方案核心优势对比
为了帮助您在React、Vue等不同技术栈中进行选型,下表对比了目前主流的几种AI流式渲染方案:
| 技术栈 | React | Vue | Vue | 通用 |
| 核心优势 | 插件全、生态成熟、开箱即用 | API对Vue友好、功能齐全 | 极致轻量、纯流式、算法先进 | 无需考虑流式 |
| 流式性能 | ⚡ 真·流式,60fps不闪屏 | ⚡ 真·流式 | ⚡ Token级切片,大代码块60fps | ❌ 不支持 |
| 插件生态 | 🔌 丰富 (KaTeX, Mermaid, Highlight等) | 🔌 丰富且增强 (Shiki高亮) | 🔌 基础 (Mermaid, KaTeX) | 依赖外部库 |
| 代码高亮 | 内置highlight.js | 🎨 Shiki引擎,140+主题,可动态切换 | 基础高亮 | 需自行集成 |
| 安全性 | 🔐 默认安全,无dangerouslySetInnerHTML | 🔐 HTML默认不解析,可选安全模式 | 安全 | 需注意XSS |
| 包体积 | 📦 轻量 (< 40kB) | 较小 | 🪶 极致轻量 (807 kB) | 视库而定 |
| 自定义能力 | 🎨 任意元素可替换为React组件 | 🎨 可在Markdown中直接嵌入Vue组件 | 🎨 支持嵌入任意Vue组件 | 常规 |
一句话选型建议:
- React项目:直接使用 Ant Design X XMarkdown,插件全、主题省心。
- Vue项目:追求功能全面,选 Element Plus X XMarkdown;追求极致轻量与纯粹流式,选 markstream-vue。
三、环境配置与安装
3.1 React项目:使用 Ant Design X
# 安装 Ant Design X 的 Markdown 流式渲染组件
npm install @ant-design/x-markdown
# 或
yarn add @ant-design/x-markdown
# 或
pnpm add @ant-design/x-markdown
兼容性:支持 Next.js、Vite、Umi、Rspack 等任意 React 技术栈。
3.2 Vue项目:使用 Element Plus X
# 安装 Element Plus X
npm install element-plus-x
# 或
yarn add element-plus-x
# 或
pnpm add element-plus-x
兼容性:兼容 Nuxt、Vite、Webpack、Rspack,也支持纯 CDN 引入。
3.3 Vue项目:使用 markstream-vue (轻量选择)
# 安装 markstream-vue
npm install markstream-vue
# 或
yarn add markstream-vue
# 或
pnpm add markstream-vue
四、快速上手教程
4.1 React + Ant Design X 示例
以下示例展示了如何连接一个AI流式API并实时渲染返回的内容。
import React, { useState, useEffect } from 'react';
import { XMarkdown } from '@ant-design/x-markdown';
// 引入所需插件(按需)
import { Latex, Mermaid, Highlight } from '@ant-design/x-markdown';
function AIChatApp() {
const [contentChunk, setContentChunk] = useState('');
// 模拟或真实连接一个 Server-Sent Events (SSE) 流
useEffect(() => {
const eventSource = new EventSource('/api/ai-stream'); // 你的AI流API地址
eventSource.onmessage = (event) => {
// 不断追加接收到的新数据块
setContentChunk(c => c + event.data);
};
return () => {
eventSource.close(); // 组件卸载时关闭连接
};
}, []);
return (
<div className="ai-stream-container">
<XMarkdown
content={contentChunk}
// 启用插件:公式、图表、代码高亮
plugins={[Latex, Mermaid, Highlight]}
// 可以在此处传递自定义主题等配置
/>
</div>
);
}
export default AIChatApp;
4.2 Vue 3 + Element Plus X 示例
此示例展示了在Vue单文件组件中的用法,并启用了强大的Shiki代码高亮。
<template>
<div class="vue-ai-app">
<x-markdown
:markdown="streamText"
:themes="{ light: 'github-light', dark: 'dracula' }"
:plugins="plugins"
/>
</div>
</template>
<script setup>
import { ref, onMounted, onUnmounted } from 'vue';
import { XMarkdown } from 'element-plus-x';
// 按需导入插件(通常XMarkdown已内置,此处为演示结构)
// import { Mermaid, KaTeX } from 'element-plus-x';
const streamText = ref(''); // 用于累积流式文本
const plugins = ref([]); // 可配置插件
// 连接事件源
let eventSource = null;
onMounted(() => {
eventSource = new EventSource('/api/ai-stream');
eventSource.onmessage = (e) => {
streamText.value += e.data; // 拼接新的数据块
};
});
onUnmounted(() => {
if (eventSource) {
eventSource.close();
}
});
</script>
4.3 Vue 3 + markstream-vue 示例 (极简流式)
对于追求最小依赖和纯粹流式体验的场景。
<template>
<MarkdownRenderer :stream="chunk" />
</template>
<script setup>
import { ref, onMounted } from 'vue';
import MarkdownRenderer from 'markstream-vue';
const chunk = ref('');
// 使用 fetch EventSource 或其他流式客户端
onMounted(() => {
fetchEventSource('/api/ai-stream', {
onmessage(e) {
chunk.value += e.data;
}
});
});
</script>
五、核心功能详解
5.1 插件系统与富内容渲染
流式渲染不仅是文本,还需要处理AI回复中可能包含的代码、数学公式、图表等复杂元素。
- Ant Design X / Element Plus X:均内置了强大的插件系统。
- KaTeX:高质量渲染行内和块级数学公式。
- Mermaid:流式渲染流程图、时序图等,并支持渐进式渲染和工具栏(缩放、下载)。
- 代码高亮:
- Ant Design X 使用 highlight.js。
- Element Plus X 使用 Shiki 引擎,支持140+种主题、动态切换,并为代码块提供折叠、复制、全屏、下载等全套工具栏。
5.2 极致自定义与安全性
- 组件替换:你可以将任何标准的Markdown元素(如<h1>、<code>)替换为你自己的React/Vue组件,实现完全定制化的UI。
- 安全渲染:三者都彻底摒弃了不安全的dangerouslySetInnerHTML(React)或v-html(Vue)做法,通过安全的虚拟DOM差异计算来更新内容,从根本上消除了XSS攻击面。Element Plus X 还提供了可选的“安全模式”进一步过滤HTML。
5.3 主题与样式
- 一键换肤:支持通过CSS变量或主题配置对象轻松切换亮色/暗色主题。
- Element Plus X 的 Shiki 优势:其代码高亮主题可以与文档主题独立切换,实现更精细的视觉控制。
六、高级应用与最佳实践
6.1 性能优化
- 虚拟滚动:对于可能极长的AI对话历史,考虑结合虚拟滚动列表库(如 react-virtualized 或 vue-virtual-scroller),仅渲染视口内的XMarkdown组件。
- 分段渲染:对于超长单次回复,可以在后端或前端逻辑上尝试进行合理分段,平衡流式感和渲染压力。
6.2 错误处理与用户体验
- 连接中断:在SSE的onerror回调中实现重连逻辑和用户提示。
- 加载状态:在流开始前,显示一个加载指示器。
- 渲染错误边界:使用React的ErrorBoundary或Vue的errorCaptured钩子,捕获并优雅处理插件(如Mermaid语法错误)渲染时的意外错误。
6.3 与状态管理集成
// 例如,在Pinia (Vue) 或 Redux (React) store中管理消息流
// 将接收到的AI流追加到当前会话的特定消息末尾
store.appendToMessageContent(messageId, newChunk);
// 然后在组件中用计算属性或选择器获取该消息内容,传递给 XMarkdown
七、写在最后
Ant Design X 的 AI 流式渲染引擎及其在Vue生态的对应实现,为解决AI原生应用的核心渲染难题提供了生产级的解决方案。
- 选择 Ant Design X XMarkdown,意味着选择了React生态下功能全面、开箱即用、历经大规模产品验证的稳定方案。
- 选择 Element Plus X XMarkdown,意味着在Vue生态中获得了功能强大、体验优雅的一站式解决方案。
- 选择 markstream-vue,意味着你为轻量、敏捷、追求极致流式性能的Vue项目选择了最锋利的工具。
无论你选择哪一个,都告别了等待全文才能渲染的卡顿时代,可以轻松构建出响应迅速、体验流畅的下一代AI应用界面。
相关链接:
- Ant Design X XMarkdown 官方文档:https://x.ant.design/x-markdowns/introduce-cn
- Element Plus X XMarkdown 官方文档:https://element-plus-x.com/zh/components/xmarkdown/
- markstream-vue 官方页面:https://markstream-vue.simonhe.me/
最近脉脉【AI创作者xAMA】活动重磅上线!!完成对应任务(发帖、发评论、关注)可获得相应积分,现金红包、商单激励、视频会员月卡等等众多好礼,挺有意思的,感兴趣的朋友可以来参与一下。 



