Mermaid:用 Markdown 写图表,文档告别画图死 文章目录Mermaid用 Markdown 写图表文档告别画图死为什么需要 Mermaid支持哪些图表实际体验适合谁用Mermaid用 Markdown 写图表文档告别画图死写文档最烦的就是画图。好不容易画好一张流程图需求改了图又得重画。改着改着图就比代码落后了几个版本最后干脆没人维护了。Mermaid 就是来解决这个问题的——用写 Markdown 的方式生成图表改需求就改几行文字的事。Mermaid 是一个 JavaScript 写的图表工具GitHub 上已经积累了 89,000 Star。它的用法很直观用类似 Markdown 的文本描述图表结构Mermaid 自动渲染成 SVG 或 HTML。流程图、时序图、甘特图、类图、状态图、饼图甚至 Git 分支图都能搞定。举个例子画个流程图只要几行flowchart LR A[Hard] --|Text| B(Round) B -- C{Decision} C --|One| D[Result 1] C --|Two| E[Result 2]看起来和写 Markdown 列表差不多但渲染出来是一张规范的流程图。为什么需要 Mermaid文档和代码脱节是软件行业的顽疾。画图成本高更新成本更高于是图表就成了文档里最先腐烂的部分。Mermaid 的思路是把图表变成文本——文本可以版本控制、可以 diff、可以嵌入代码注释、可以集成到 CI/CD 流程里。比如你在 GitHub 上写 README直接用 mermaid 代码块就能渲染图表sequenceDiagram Alice-John: Hello John, how are you? John--Alice: Great!GitHub 在 2022 年已经原生支持 Mermaid 渲染不需要任何插件。支持哪些图表Mermaid 目前支持的图表类型覆盖了日常开发的大部分场景流程图Flowchart最基本的流程图支持方向、分支、子图时序图Sequence Diagram展示对象之间的交互顺序API 调用链、协议交互都能画甘特图Gantt项目排期、任务依赖适合项目管理类图Class DiagramUML 类关系Java/Python 项目常用状态图State Diagram状态机、工作流饼图Pie Chart数据占比简单直观Git 分支图Git Graph可视化 Git 分支合并历史C4 图软件架构的层级描述从系统上下文到容器、组件每种图表都有在线编辑器可以实时预览语法也不复杂花 10 分钟看看例子就能上手。实际体验Mermaid 的语法设计得很克制。学过 Markdown 的人基本看一眼就能写。官方提供了 Live Editor可以在浏览器里边写边看效果零安装成本。生产环境使用的话可以直接引入 npm 包或者在 CI 里用命令行工具把 .mmd 文件批量转成图片。文档项目可以统一用文本维护图表再也不用手动截图替换了。当然也有局限。复杂布局的图表比如大型系统架构图还是用专业绘图工具更顺手。Mermaid 的自动布局引擎适合中等复杂度的图表太复杂的话布局会变得难以控制。但对于日常文档中 80% 的场景——流程图、时序图、甘特图——它完全够用。适合谁用写技术文档的人把图表纳入版本管理告别文档腐烂项目经理甘特图和流程图直接用文本维护改排期不用重画开源项目维护者README 里的架构图随代码一起更新任何想减少重复劳动的人画图是个体力活让机器干更划算Mermaid 被 JS 开源奖评为 2019 年最激动人心的技术应用从结果看实至名归。它解决的是文档领域一个小而痛的缺口方案也足够优雅——让图表回归文本让文档重新跟上代码。“最激动人心的技术应用”从结果看实至名归。它解决的是文档领域一个小而痛的缺口方案也足够优雅——让图表回归文本让文档重新跟上代码。

相关新闻

最新新闻

Python自动玩跳一跳:ADB截屏与图像识别的自动化闭环实战

Python自动玩跳一跳:ADB截屏与图像识别的自动化闭环实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/2 19:23:54
Nano Banana 2 Lite开发板实战:从Linux环境搭建到物联网边缘节点部署

Nano Banana 2 Lite开发板实战:从Linux环境搭建到物联网边缘节点部署

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/2 19:23:54
C++Builder 6老项目多国语言切换实战:语言包与TNT控件方案

C++Builder 6老项目多国语言切换实战:语言包与TNT控件方案

简介:这份多国语言演示源码基于 C Builder 6 集成开发环境编写,适合刚开始接触桌面程序开发、又希望让应用支持多种语言的开发者。项目围绕资源文件和本地化技术展开,展示了如何为不同语言建立各自的资源模块,并在程序运行时按用户…

2026/9/2 19:23:54
Unity 3D篮球投篮Demo开发全攻略:物理碰撞、动画创建与安卓适配

Unity 3D篮球投篮Demo开发全攻略:物理碰撞、动画创建与安卓适配

简介:一款基于 Unity3D 的篮球游戏 Demo,面向 Unity 入门与进阶开发者,适合作为 3D 游戏开发的学习样本。压缩包共含 1207 个文件,整体约 46.65MB,涵盖 C# 脚本、Unity 场景、预制体、FBX/3DS 模型、材质与纹理贴图、M…

2026/9/2 19:23:54
Kindle Paperwhite 2越狱实战:watchthis包安装与避坑指南

Kindle Paperwhite 2越狱实战:watchthis包安装与避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/2 19:23:54
为什么需要微服务?从单体架构到微服务拆分的核心权衡与落地指南

为什么需要微服务?从单体架构到微服务拆分的核心权衡与落地指南

微服务这三个字,在 Java 后端面试里几乎是必考题,在技术方案评审里也经常被翻来覆去地讨论。但很多同学对它的理解还停留在“大厂都在用,所以我也要用”这个层面。如果被问到“为什么需要微服务”,回答往往是“因为单体应用撑不住…

2026/9/2 19:18:53