这是 Mermaid 常用语法速查表,将流程图、序列图、类图等核心语法整合在一张表中,方便你在 Typora 里随时查阅。
| 图表类型 | 语法要点 / 代码示例 | 说明 |
|---|---|---|
| 流程图 | graph TD / flowchart LR |
方向:TD(上→下)、LR(左→右)、RL、BT |
A[矩形] B(圆角) C([体育场]) D[[子程序]] E[(数据库)] F((圆形)) G>旗帜] H{菱形} |
节点形状 | |
A --> B / A --- B / A -.-> B / A ==> B |
连线:实线箭头、无箭头、虚线箭头、粗箭头 | |
A -- 文字 --> B 或 `A --> |
文字 | |
subgraph 标题 ... end |
子图分组 | |
style A fill:#f9f,stroke:#333 |
节点样式(可逗号分隔多个节点) | |
classDef myStyle fill:#eee; 然后 class A,B myStyle |
定义并应用类样式 | |
| 序列图 | sequenceDiagram |
图表类型声明 |
participant A 或 actor A |
参与者(actor 为人形图标) | |
A->>B: 消息 (实线实心箭头) |
同步消息 | |
A-->>B: 返回 (虚线实心箭头) |
返回消息 | |
A->B: 消息 (实线箭头) |
同步消息 | |
A--B: 异步 (虚线箭头) |
异步消息 | |
A-xB: 丢失 (末尾×) |
消息丢失 | |
activate A / deactivate A 或 A->>+B: 激活 B-->>-A: 停用 |
激活条 | |
Note right of A: 注释 或 Note over A,B: 跨越注释 |
注释(位置:left/right/over) | |
loop 循环描述 ... end |
循环 | |
alt 条件1 ... else 条件2 ... end |
条件分支 | |
rect rgb(200,200,200) ... end |
背景高亮块 | |
| 类图 | classDiagram |
图表类型 |
class Animal { +String name +int age +makeSound() void} |
定义类(+公共,-私有,#保护) | |
| `A < | -- B` : 继承 | |
A *-- B : 组合 |
实心菱形 | |
A o-- B : 聚合 |
空心菱形 | |
A --> B : 关联 |
实线箭头 | |
A ..> B : 依赖 |
虚线箭头 | |
| `A .. | > B` : 实现 | |
A --> B : 标签 |
关系上添加文字 | |
| 状态图 | stateDiagram-v2 |
图表类型 |
[*] |
开始/结束状态 | |
状态名 或 [状态描述] |
状态节点 | |
S1 --> S2 : 事件/动作 |
状态转移 | |
state 复合状态 { [*] --> 子状态 ...} |
复合状态嵌套 | |
-- 或 --- |
并发状态的分隔线 | |
| 饼图 | pie title 标题 "标签1" : 30 "标签2" : 70 |
数值自动计算百分比 |
| 甘特图 | gantt title 标题 dateFormat YYYY-MM-DD section 阶段 任务1 :a1, 2024-01-01, 30d 任务2 :after a1, 20d |
项目时间线;状态:done,active,crit 等 |
| 思维导图 | mindmap root(中心) 分支1 叶子 分支2 |
需要较新 Mermaid 版本,Typora 部分版本可能不支持 |
| 通用技巧 | A[第一行<br>第二行] |
节点内换行 |
%% 这是注释 |
单行注释 | |
特殊字符:#34; 显示引号,#35; 显示 # |
转义特殊字符(数字为 HTML 实体编号) |
流程图
graph TD
A[开始] --> B{条件判断}
B -->|是| C[执行操作]
B -->|否| D[跳过]
C --> E[结束]
D --> E
时序图
sequenceDiagram
客户端->>服务端: 发送请求
服务端->>数据库: 查询数据
数据库-->>服务端: 返回结果
服务端-->>客户端: 响应数据
类图
classDiagram
Animal <|-- Dog
Animal <|-- Cat
Animal : +String name
Animal : +eat()
Dog : +bark()
Cat : +meow()
状态图
stateDiagram-v2
[*] --> 待处理
待处理 --> 处理中 : 开始
处理中 --> 已完成 : 成功
处理中 --> 失败 : 异常
失败 --> 待处理 : 重试
已完成 --> [*]