Mermaid-常用语法
1.背景
Mermaid 是一种基于文本的图表工具,允许通过简单的语法生成流程图、时序图等可视化图表,广泛应用于文档和博客中。
常见的md编辑器都支持Mermaid语法,后续以Typora为例。
在Typora中,类似于引入代码块一样,我们可以通过```mermaid来引入一段Mermaid语法。

在Mermaid代码块中,首行声明图表类型。
| 图表类型 | 关键字 |
|---|---|
| 时序图 | sequenceDiagram |
| 流程图 | graph |
| 甘特图 | gantt |
| 类图 | classDiagram |
| 状态图 | stateDiagram |
| 实体关系图 | erDiagram |
| 用户旅程图 | journey |
| 饼图 | pie |
例如,声明一个时序图。
sequenceDiagram
%% 注释信息
示例图是一个在线网站,可以实时渲染Mermaid图像:mermaidviewer

2.语法
2.1 时序图sequenceDiagram
| 语法 | 描述 | 示例 | |
|---|---|---|---|
| sequenceDiagram | 定义一个时序图 | sequenceDiagram | ![]() |
| autonumber | 为每个步骤自动添加序号 | autonumber | ![]() |
| participant | 定义参与者(角色) | participant Alice(自定义角色名) actor User(自定义角色名) |
![]() ![]() |
| -> | 实线(不带箭头) | Alice->Bob: Hello! | ![]() |
| ->> | 实线箭头 发送消息(箭头指向右) |
Alice->>Bob: Hello! | ![]() |
| --> | 虚线(不带箭头) | Alice-->Bob: Hello! | ![]() |
| -->> | 虚线箭头 发送异步消息(箭头指向右,表示异步) |
Alice-->>Bob: Hello! | ![]() |
| <<- | 虚线箭头 接收消息(箭头指向左) |
Bob<<-Alice: Hi! | ![]() |
| -x | 实线删除 | Alice -x Bob: 删除 | ![]() |
| --x | 虚线删除 | Alice --x Bob: 删除 | ![]() |
| loop … end | 循环结构 | loop 每秒轮询一次 A->>B: ping end |
![]() |
| alt … else … end | 条件分支(if/else) | alt 用户登录成功 A->>B: GetUserInfo else A->>B: ShowError end |
![]() |
| opt … end | 可选执行(仅在某些条件下执行) | opt 用户已登录 A->>B: GetUserInfo end |
![]() |
| par … end | 并行执行(并行执行多条消息) | par A发送消息 A->>B: Request and B发送消息 B->>C: Process end |
![]() |
| Note right of | 在参与者的右侧添加注释 | Note right of Alice: 请求发送中 | ![]() |
| Note left of | 在参与者的左侧添加注释 | Note left of Bob: 等待处理 | ![]() |
| Note over | 可以同时对多个参与者添加注释 | Note over Alice,Bobr: 多个注释 | ![]() |
| activate … deactivate | 激活和停用参与者 | activate Alice A->>Bob: Hello! deactivate Alice |
![]() |
| link | 为时序图中的消息添加超链接 | link https://example.com | ![]() |
| rect … end | 添加矩形区域(突出显示) rgba(红、绿、蓝、透明度) |
rect rgba(255, 0, 0, 0.1) A->>B: 做一些事情 end |
![]() |
sequenceDiagram
autonumber
participant a as A
participant b as B
a->>b: hello
b->>a: hello






















浙公网安备 33010602011771号