用途
markstream-vue2-cli 用于在宿主应用为 Vue 2、并使用 Vue CLI 或其他 Webpack 4 风格构建栈时,集成 markstream-vue2。
主要能力与工作流程
- 确认仓库使用 Vue 2 加 Vue CLI 或 Webpack 4 时代的工具链。
- 安装 markstream-vue2,并只安装所需功能对应的 peer 依赖。
- 在应用外壳中导入 markstream-vue2/dist/index.css。
- 避免使用 Vite 风格的 ?worker 导入。
- 需要 worker 时使用 createKaTeXWorkerFromCDN(...) 和 createMermaidWorkerFromCDN(...)。
- 优先使用稳定的代码块默认值,而非脆弱的接线方式。
- 在 Webpack 4 时代的仓库中,stream-diffs(或普通 <pre>)是唯一的代码块运行时——没有 Monaco/stream-monaco 回退,也没有 MarkdownCodeBlockNode。
- 使用顶层 code-block-options 或直接使用 CodeBlockNode.code-block-options 来应用共享的渲染器无关选项契约。将 header/toolbar 相关 props 保留在 code-block-props 中。
流式与历史内容
对于 AI 聊天或流式 UI,优先保留内容并使用内置的平滑流式。
- smooth-streaming="auto" 是默认值,当 typewriter=true 或 max-live-nodes <= 0 时激活。
- typewriter 只控制闪烁光标,默认值为 false。
- fade 控制节点进入和流式文本的淡入动画,默认值为 true。
流式与恢复历史:在聊天 UI 中,同一个 MarkdownRender 先进行流式输出,当 final=true 时切换为历史内容。
- 流式:smooth-streaming="auto"、:fade="false"、typewriter=true。这是一种保守的视觉/性能选择,并非 API 不兼容。该适配器尚未采用 Vue 3 的有界追加淡入,因此在同时启用两者之前请先验证其动画行为。
- 恢复历史::smooth-streaming="false"、:fade="true"、typewriter=false。内容已经完整——节流会拖慢它,但 fade 能带来更精致的进入动画。
- 动态切换::smooth-streaming="isStreaming ? 'auto' : false"、:fade="!isStreaming"。
只有在处理 worker 预处理内容、共享 AST store 或自定义 AST 控制时,才转为 nodes + final 方式。
默认决策与限制
- 注意 html-policy 现在默认安全,Mermaid 严格模式通过 mermaid-props 默认开启。
- 使用最小可用的本地开发或构建命令进行验证。
- 代码块增强不再依赖 Monaco;worker 密集的配置仅适用于 Mermaid/KaTeX CDN worker。
- 对于 Mermaid 和 KaTeX,优先使用 CDN worker 而非打包器 worker。
- 当仓库使用 Vue 2.6 时,保持显式的 Vue 2 composition-api shim。
- 除非任务是保留受信任的旧版渲染,否则保持 html-policy="safe" 和 Mermaid 严格模式。
- 如果受信任的界面需要旧行为,仅在该界面使用 html-policy="trusted" 和 :mermaid-props="{ isStrict: false }",并说明原因。
相关文档
docs/guide/vue2-quick-start.md docs/guide/vue2-installation.md docs/guide/troubleshooting.md