“mermaid 代码块”其实是 Markdown 中用于展示代码的语法,用三个反引号(```)包裹内容。如果代码块指定的语言是 mermaid,并且你的编辑器支持 Mermaid 渲染,它就能自动生成流程图、时序图等图形。
1. Mermaid 是什么?
Mermaid 是一个基于 JavaScript 的图表生成库,允许你用文本语法(类似 Markdown)生成流程图、时序图、甘特图等。它的核心优势是代码即图形,适合在 Markdown 文档中直接编写图表。
2. 为什么代码块能渲染成图?
- Markdown 扩展功能:支持 Mermaid 的编辑器(如 Typora、VS Code 的 Mermaid 插件、Obsidian、Mermaid Live Editor 等)会自动解析
mermaid
代码块并渲染成图形。 - 语法解析:Mermaid 的语法类似伪代码,定义节点和连接关系,最终通过浏览器或编辑器渲染成矢量图(SVG)。
3. 类似的技术或工具
除了 Mermaid,还有一些工具可以通过代码生成图形:
工具/语言 | 特点 |
---|---|
PlantUML | 用文本描述 UML 图(类图、时序图、用例图等),需安装 Java 和插件。 |
Graphviz | 用 DOT 语言生成拓扑图,适合复杂的数据流或结构图。 |
Draw.io (diagrams.net) | 拖拽式工具,但支持导出 XML 格式嵌入文档。 |
Viz.js | 基于 Graphviz 的 Web 实现,支持在 Markdown 中用 DOT 语法绘图。 |
LaTeX TikZ | 适合学术论文,用 LaTeX 代码绘制高质量矢量图(学习曲线陡峭)。 |
4. Mermaid 的更多技巧
(1) 流程图(Flowchart)
```mermaid
graph LR
A[开始] --> B{条件判断}
B -- 条件为真 --> C[执行操作]
B -- 条件为假 --> D[跳过操作]
C --> E[结束]
D --> E
\\```
(2) 时序图(Sequence Diagram)
```mermaid
sequenceDiagram
用户 ->> 服务器: 请求数据
服务器 -->> 数据库: 查询
数据库 -->> 服务器: 返回结果
服务器 -->> 用户: 显示数据
\\```
(3) 甘特图(Gantt Chart)
```mermaid
gantt
title 项目时间表
dateFormat YYYY-MM-DD
section 阶段一
任务1 :a1, 2024-01-01, 30d
任务2 :a2, 2024-02-01, 20d
section 阶段二
任务3 :a3, 2024-03-01, 15d
\\```
(4) 饼图(Pie Chart)
```mermaid
pie
title 占比分析
"项目A" : 25
"项目B" : 35
"项目C" : 40
\\```
(5) 类图(Class Diagram)
```mermaid
classDiagram
class Animal {
+String name
+makeSound()
}
class Dog {
+bark()
}
class Cat {
+meow()
}
Animal <|-- Dog
Animal <|-- Cat
\\```
5. 注意事项
- 环境支持:确保编辑器支持 Mermaid(如 Typora 需启用 Mermaid 实验功能,VS Code 需安装插件)。
- 语法差异:不同版本的 Mermaid 语法可能略有不同,建议参考官方文档 Mermaid 官网。
- 调试技巧:如果图形不显示,检查语法是否正确,或尝试在 Mermaid Live Editor 中测试。
6. 学习资源
- 官方文档:Mermaid 官方教程
- 在线编辑器:Mermaid Live Editor(实时预览)
- VS Code 插件:安装
Mermaid Preview
或Mermaid Syntax Highlighting
。