项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 3053
使用教程
环境要求
- 已有一个 Vue 3 / Nuxt / VitePress 前端项目(markstream-vue 只服务 Vue 系框架)
- 本机已安装 Node.js 并可使用 pnpm(README 的安装命令基于 pnpm)
- 需要 Mermaid 图表、KaTeX 公式、代码高亮等能力由该渲染器内置提供
安装与启动步骤
-
1确认项目环境
markstream-vue 是 Vue 3 / Nuxt / VitePress 的流式 Markdown 渲染器,React、Svelte、Angular 等请改用同系列兄弟包,不要装这个。
-
2安装 markstream-vue
在项目根目录用 pnpm 安装;用 npm 的项目把命令换成 npm install markstream-vue。2.x 是 npm 的 latest 稳定版。
pnpm add markstream-vue -
3引入组件与样式
务必同时引入 markstream-vue/index.css,否则渲染样式会缺失。content 传流式文本,final 表示是否已输出完成。
<script setup lang="ts"> import MarkdownRender from 'markstream-vue' import 'markstream-vue/index.css' defineProps<{ content: string isDone: boolean }>() </script> <template> <MarkdownRender mode="chat" :content="content" :final="isDone" /> </template> -
4锁定 1.x 版本
如果应用在 2.x 切换期必须留在 1.x,用 @1 安装;1.x 也保留在 npm 的 legacy 标签上,预发布在 legacy-next。
pnpm add markstream-vue@1 -
5SSR 预解析节点
在服务端或 Worker 里先解析成结构化节点,把 nodes 传给客户端渲染,可避免客户端解析并保持 SSR/水合结果确定。
// server or worker import { getMarkdown, parseMarkdownToStructure } from 'markstream-vue' const md = getMarkdown() const nodes = parseMarkdownToStructure('# Hello\n\nThis is parsed once', md) // send `nodes` JSON to the client const nodes = parseMarkdownToStructure(source, md, { final: true }) -
6客户端渲染节点
客户端直接接收服务端传来的 nodes 渲染,不再自行解析 Markdown,适合需要确定性输出的场景。
<MarkdownRender :nodes="nodesFromServer" />
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
mode | 是 | 渲染模式,示例中聊天流式场景使用 chat | chat |
content | 是 | 要渲染的 Markdown 内容,可随流式输出不断更新 | content |
final | 否 | 标记内容是否已结束输出,用于切换最终解析语义 | isDone |
nodes | 否 | SSR/Worker 预解析好的节点,传入后组件不再自行解析 | nodesFromServer |
parse-options.streamParse | 否 | 控制流式解析策略,可选 true / false / 'auto' | { streamParse: 'auto' } |
如何确认成功
页面上出现正确的 Markdown 渲染结果,内容随流式输出逐步更新且无明显抖动,HTML/CSS 样式正常。
常见问题
Q:我的项目是 React / Svelte / Angular,能装这个包吗?
A:不能直接用。markstream-vue 只面向 Vue 3 / Nuxt / VitePress,其他框架请使用 Markstream 家族的对应兄弟包。
Q:代码块和 diff 渲染不够强怎么办?
A:按需额外安装可选的 stream-diffs peer 依赖,README 说明只在需要增强的代码块和 diff 块时安装它。
Q:如何避免流式解析结果残留或不一致?
A:当 final 变化时渲染器会作废流缓存并按最终语义重新解析;也可显式传 parse-options,把最终内容解析交回常规解析器或完全关闭流式解析。
Q:复用同一个 md 实例解析无关文档要注意什么?
A:parseMarkdownToStructure 默认 streamParse 为 'auto',会保留最新 source/token 缓存;解析一次性文档时请传 { final: true } 或 { streamParse: false }。
注意事项
- 2.x 是 npm latest 稳定线,1.x 保留在 legacy 标签、预发布在 legacy-next,跨 2.x 升级可参考官方 1.x→2.0 迁移指南。
- MarkdownRender 自己解析 content 时,parseOptions.streamParse 默认是 true;如需最终内容走常规解析,传 'auto' 或 false。
- 代码块运行时在 2.0 有变化,从 1.x 升级前先看迁移指南再动手。
- 安装命令要按自己项目的包管理器替换,README 同时给出了 pnpm 与 npm 两种写法。
核心亮点
- 支持 Vue、React、Svelte、Angular 多框架,一套逻辑复用
- 内置 Mermaid、KaTeX、Shiki 等常用组件,开箱即用
- 低抖动更新机制,适合高频流式输出场景
不足之处
- 文档/社区待观察
适用场景
- AI 聊天机器人流式回复渲染
- AI 生成文档或报告的实时预览
- 多框架团队统一渲染方案选型
替代项目
react-markdown、marked、markdown-it
上一篇:langgraphjs
同类项目推荐
langchain-supabase-website-chatb···
开源
用 LangChain + Supabase 给网站加上 ChatGPT 问答机器人
Build a chatgpt chatbot for your website using LangChain, Supabase, Typescript, Open···
Text2Sql.Net
开源
用大白话问数据库,自动生成SQL,提升查询效率
Text2Sql.Net 是一个使用DotNet和Semantic Kernel开发的Text2Sql工具
soorgeon
开源
一键把 Jupyter 笔记本变成生产级数据管道
Convert monolithic Jupyter notebooks into maintainable Ploomber pipelines.
git-ape
开源
让 AI 智能体安全接入你的 Git 工作流
platform engineering framework for the agentic age
genaiops-promptflow-template
开源
用 Prompt Flow 模板,快速搭建 LLM 应用的 DevOps 流水线
GenAIOps with Prompt Flow is a "GenAIOps template and guidance" to help you build LL···
ComfyUI-MultiGPU
开源
一键扩展显存,多卡并行跑大模型,低配也能生成高清视频。
This custom_node for ComfyUI adds one-click "Virtual VRAM" for any UNet and CLIP loa···
java-genai
开源
Java 后端直接调用 Gemini,官方 SDK 免手写封装
Google Gen AI Java SDK provides an interface for developers to integrate Google's ge···
skillware
开源
像管理软件包一样管理 AI 技能,让智能体能力随需组合。
A Python framework for modular, self-contained skill management for machines.
raxol
开源
一套代码,终端、浏览器、智能体三端通吃
One Elixir module, every surface. The terminal for your Gundam.
