Mermaid Preview插件直接复用Mermaid.js浏览器端渲染能力,不依赖Java/Graphviz/Node.js,离线可用且轻量;PlantUML插件需手动选择Local(java+Graphviz)或Server模式;MPE混合调用但易静默降级。

Mermaid Preview 插件默认用 Mermaid.js 渲染引擎
vscode-mermaid-preview 是 Mermaid.js 官方维护的插件,它不另起炉灶,直接复用 mermaid@10.9.0+(2026 年主流版本)的浏览器端渲染能力。这意味着你写的 flowchart TD、classDiagram 或 erDiagram,最终都是由 Mermaid.js 的 mermaid.initialize() 和 mermaid.render() 执行解析与 SVG 生成。
关键点在于:它不依赖 Java、Graphviz、Node.js 运行时或远程服务——只要 VS Code 能跑 WebView,就能渲染。这也是它比 PlantUML 插件更轻量、离线可用的根本原因。
- 渲染发生在插件自己的 Webview 内,与 VS Code 主进程隔离,崩溃不影响编辑器
- 不支持自定义 Mermaid 引擎路径(比如换用本地
mermaid.min.js),所有升级由插件自动同步 - 若遇到
mermaid.parse error: Syntax error in graph,问题一定在代码本身,而非引擎缺失
PlantUML 插件实际有两套渲染引擎可选
VS Code 的 PlantUML 插件(如 PlantUML Visualizer 或 PlantUML)本身不渲染,它只是调度器。真正干活的是后端引擎,你必须明确选一个:
-
plantuml.render: "Local"→ 调用本地java -jar plantuml.jar+dot(Graphviz)组合渲染;适合离线、批量导出、定制字体 -
plantuml.render: "PlantUMLServer"→ 发 HTTP 请求到https://www.plantuml.com/plantuml/;无需安装依赖,但需联网,且不支持私有语法扩展
常见错误:java.lang.NullPointerException 或预览空白,大概率是设了 Local 却没装 Graphviz,或 dot -V 在终端能运行、但在 VS Code 终端里报 command not found(PATH 不一致)。
Markdown Preview Enhanced(MPE)走的是混合引擎路线
如果你用 Markdown Preview Enhanced(简称 MPE),它对 Mermaid 和 PlantUML 分别调用不同后端:
- Mermaid 块 → 直接内联
mermaid.js(同 Mermaid Preview 插件) - PlantUML 块 → 默认走
PlantUMLServer,除非你手动配置plantuml.jar和graphviz.dot路径
MPE 的优势是统一入口,但隐患也在这里:它不会主动校验你配的 graphviz.dot 是否真实可用。比如你在 settings.json 里写了 "plantuml.graphvizDot": "C:\Graphviz\bin\dot.exe",但该路径下 dot.exe 实际不存在,MPE 会静默 fallback 到 server 模式,导致你误以为本地渲染成功,结果导出 SVG 时中文乱码或布局错乱。
渲染引擎选型不能只看“能不能出图”
真正影响工作流的是导出质量、离线能力、中文字体控制和大图性能:
- Mermaid 引擎对中文支持好(默认用系统字体),但复杂甘特图或状态图在 >50 节点时可能卡顿,此时要关掉
mermaid.preview.autoZoom改用手动缩放 - PlantUML Local 模式必须配
PLANTUML_LIMIT_SIZE环境变量才能渲染超大图,否则直接java.lang.OutOfMemoryError - 所有引擎在 VS Code 深色主题下都可能出现图标发灰,这不是渲染问题,而是插件 CSS 变量没适配当前主题的
--vscode-editor-foreground,得手动覆写mermaid.vscode.dark_theme
最常被忽略的一点:VS Code 更新后,某些插件会重置渲染引擎配置项(比如把 plantuml.render 自动改回 Local),建议把关键配置加进 workspace settings.json 并 git track,而不是只存在用户级设置里。


















