前置知识: Markdown

Mermaid 图表

3 min中级

Mermaid图表语法:流程图、时序图、甘特图、类图与状态图的完整用法。

Layer 2 专业层标注:图表按需学习,先掌握基础语法再学绘图。

1. Mermaid 概述

1.1 什么是 Mermaid

Mermaid 是一种基于文本的图表描述语言,允许在 Markdown 中使用代码块创建图表。它将图表定义从图形编辑器转移到文本,使图表可以纳入版本控制。

1.2 基本语法

markdown
```mermaid
graph TD
    A[开始] --> B{判断}
    B -->|是| C[执行]
    B -->|否| D[结束]
    C --> D
```

1.3 支持的图表类型

图表类型关键字用途
流程图graph算法流程、业务流程
时序图sequenceDiagram交互流程、API 调用
甘特图gantt项目进度、任务排期
类图classDiagram面向对象设计
状态图stateDiagram-v2状态机、生命周期
ER 图erDiagram数据库设计
饼图pie数据占比
思维导图mindmap知识结构
Git 图gitGraph分支策略

2. 流程图

2.1 方向

关键字方向
TB / TD从上到下
BT从下到上
LR从左到右
RL从右到左

2.2 节点形状

矩形

圆角矩形

菱形

数据库

子流程

圆柱体

旗帜

矩形

圆角矩形

菱形

数据库

子流程

圆柱体

旗帜

mermaid diagram
语法形状用途
[文本]矩形普通步骤
(文本)圆角矩形开始/结束
{文本}菱形判断/条件
[(文本)]圆柱体数据库
[[文本]]子流程子过程
((文本))圆形连接点

2.3 连接线

语法样式说明
-->实线箭头默认连接
---实线无箭头无方向关联
-.->虚线箭头可选/条件路径
==>粗线箭头强调路径
B -->|文本| C带文字的箭头连线上标注条件说明

2.4 完整示例

是

否

是

否

是

否

用户请求

已登录?

验证权限

跳转登录

输入凭证

验证通过?

显示错误

有权限?

返回数据

403 禁止访问

是

否

是

否

是

否

用户请求

已登录?

验证权限

跳转登录

输入凭证

验证通过?

显示错误

有权限?

返回数据

403 禁止访问

mermaid diagram

3. 时序图

3.1 基本语法

数据库后端前端用户数据库后端前端用户点击登录POST /api/login查询用户返回用户数据验证密码返回 Token登录成功
数据库后端前端用户数据库后端前端用户点击登录POST /api/login查询用户返回用户数据验证密码返回 Token登录成功
mermaid diagram

3.2 消息类型

语法样式说明
->>实线实心箭头同步请求
-->>虚线实心箭头返回/响应
->实线无箭头单向通知
-)实线开放箭头异步消息
--)虚线开放箭头异步响应/回调
-x实线叉箭头失败/丢失的消息

3.3 高级特性

DBServerClientDBServerClientHTTP 请求阶段alt[成功][失败]GET /api/users1SELECT * FROM users2返回结果3200 OK + 数据4500 Error5
DBServerClientDBServerClientHTTP 请求阶段alt[成功][失败]GET /api/users1SELECT * FROM users2返回结果3200 OK + 数据4500 Error5
mermaid diagram
  • autonumber:自动编号
  • Note over A,B:跨参与者注释
  • activate/deactivate:显示激活状态
  • alt/else:条件分支
  • loop:循环
  • opt:可选

4. 甘特图

4.1 基本语法

01/0401/1101/1801/2502/0102/0802/15需求分析 需求评审 前端开发 后端开发 集成测试 性能测试 预发布 正式发布 需求阶段开发阶段测试阶段上线阶段项目开发计划
01/0401/1101/1801/2502/0102/0802/15需求分析 需求评审 前端开发 后端开发 集成测试 性能测试 预发布 正式发布 需求阶段开发阶段测试阶段上线阶段项目开发计划
mermaid diagram

4.2 任务状态

关键字样式说明
done已完成(灰色)已完成的任务
active进行中(蓝色)当前执行的任务
(默认)未开始(浅色)待执行的任务
milestone里程碑(菱形)关键节点
crit关键路径(红色)必须按时完成

5. 类图

5.1 基本语法

Animal

+String name

+int age

+makeSound() : void

+move() : void

Dog

+String breed

+fetch() : void

+bark() : void

Cat

+String color

+purr() : void

Shelter

-List<Animal> animals

+addAnimal(Animal a) : void

+findByName(String name) : Animal

Animal

+String name

+int age

+makeSound() : void

+move() : void

Dog

+String breed

+fetch() : void

+bark() : void

Cat

+String color

+purr() : void

Shelter

-List<Animal> animals

+addAnimal(Animal a) : void

+findByName(String name) : Animal

mermaid diagram

5.2 关系类型

语法关系说明
<|--继承子类继承父类
*\--组合强拥有,生命周期一致
o--聚合弱拥有,可独立存在
-->关联单向引用
--关联(双向)双向引用
..>依赖使用关系
..|>实现接口实现

6. 状态图

6.1 基本语法

提交申请

审核通过

审核拒绝

重新提交

开始执行

执行完成

取消执行

待提交

审核中

已批准

已拒绝

执行中

已完成

已取消

提交申请

审核通过

审核拒绝

重新提交

开始执行

执行完成

取消执行

待提交

审核中

已批准

已拒绝

执行中

已完成

已取消

mermaid diagram

6.2 复合状态

启动

停止

空闲

运行中

初始化

处理中

等待响应

启动

停止

空闲

运行中

初始化

处理中

等待响应

mermaid diagram

7. 平台支持

平台Mermaid 支持说明
GitHub支持2022 年起原生支持 mermaid 代码块
GitLab支持原生支持
Obsidian支持原生支持
Typora支持原生支持
Hugo需配置通过 shortcode 或客户端渲染接入
Jekyll需插件需插件
CommonMark不支持语言标识只是普通围栏,无渲染行为

8. 调试技巧

  • 使用 Mermaid Live Editor 在线编辑和预览
  • 语法错误时图表不渲染,检查控制台错误信息
  • 节点 ID 不能包含空格,使用文本标签代替