Mermaid教程收录
目录
Mermaid教程收录
时间管理、头脑风暴、阅读、会议记录神器-Mermaid
Mermaid英文教程
Mermaid在线编辑器
Mermaid,就像用 Markdown 码字一样,高效制作简易流图
Mermaid - 流程图
基本结构
- 圆角矩形 表示“开始”与“结束”
- 矩形表示行动方案、普通工作环节用
- 菱形表示问题判断或判定(审核/审批/评审)环节
- 用平行四边形表示输入输出
- 箭头代表工作流方向
流程图与节点的创建
graph 流程图声明
|
|
|
|
语法:id(":转义字符;")
|
|
各方向
|
|
|
|
|
|
|
|
节点形状
|
|
|
|
线条形状
|
|
带文字的链接线
|
|
关系链
|
|
|
|
|
|
|
|
正常写法
|
|
简易写法
|
|
不美观
|
|
美观:加长某一项
|
|
增加层级:再加长
|
|
可用—-> 链接线会增加3个层级的长度 一下是各个类型连接线增加层级长度语法
增加层级长度 | 1 | 2 | 3 |
---|---|---|---|
实线 | — | —- | —– |
带箭头的实线 | –> | —> | —-> |
粗实线 | === | ==== | ===== |
带箭头的粗实线 | ==> | ===> | ====> |
虚线 | -.- | -..- | -…- |
带箭头的虚线 | -.-> | -..-> | -…-> |
子图表 subgraph
|
|
|
|
交互
为节点添加事件 以及点击跳转 这个现在还不是很好用
|
|
源代码:
|
|
生成效果:
|
|
注释 %%
-
源代码
1 2 3
graph LR %% this is a comment A -- text --> B{node} A -- text --> B -- text2 --> C
-
生成效果
|
|
添加样式
方式1
-
语法: style id key:value,key:value
-
源代码:
1 2 3 4 5
graph LR s["开始(实线边框,4px,边框颜色:#007fff 掘金蓝 ,背景色:red)"] e["结束(虚线边框,4px,边框颜色:red,背景色:#007fff 掘金蓝 文本颜色为白色)"] style s fill:red ,stroke:#007fff,stroke-width:4px style e fill:#007fff,stroke:red,stroke-width:4px,stroke-dasharray: 5 5,color:#fff
-
生成效果
1 2 3 4 5
graph LR s["开始(实线边框,4px,边框颜色:#007fff 掘金蓝 ,背景色:red)"] e["结束(虚线边框,4px,边框颜色:red,背景色:#007fff 掘金蓝 文本颜色为白色)"] style s fill:red ,stroke:#007fff,stroke-width:4px style e fill:#007fff,stroke:red,stroke-width:4px,stroke-dasharray: 5 5,color:#fff
方式2
-
- 定义样式 class
- 语法:classDef className 样式定义
-
- 应用 :::classname
-
源代码:
1 2 3
graph LR s[开始]:::ownstyle-->e[结束] classDef ownstyle fill:#007fff,stroke:red,stroke-width:4px,stroke-dasharray: 5 5,color:#fff
-
生成效果
1 2 3
graph LR s[开始]:::ownstyle-->e[结束] classDef ownstyle fill:#007fff,stroke:red,stroke-width:4px,stroke-dasharray: 5 5,color:#fff
方式3 css class形式添加样式
- 定义
|
|
-
实例: 源代码
1 2 3 4
graph LR; A-->B[AAA<span>BBB</span>]; B-->D; class A cssClass;
生成效果:
1 2 3 4
graph LR; A-->B[AAA<span>BBB</span>]; B-->D; class A cssClass;
Mermaid - 时序图(序列图)
基本结构
角色
Actor 系统角色 可是是人或者其他系统子系统对象
Object 交互过程中扮演的角色 一般位于时序图顶部生命线
Lifeline 生命线代表时序图中的对象在一段时期内的存在控制焦点
Activation 控制焦点代表时序图中的对象执行一项活动的时期消息
Message 定义交互和协作中交换信息的类
基本对象声明
|
|
对象声明-别名 Aliases
|
|
消息 Message
- 语法:participant1 箭头 participant2:消息内容
|
|
线型对照表
线形 | 含义 |
---|---|
-> | 无箭头的实线 |
–> | 没箭头的虚线 |
-» | 带箭头的实线 |
–» | 带箭头的实线 |
-x | 带x号箭头实线 |
–x | 结尾x号箭头实线 |
-) | 结束 带箭头的实线 |
–) | 结束 带箭头的虚线 |
控制焦点 Activations
-
语法:
1 2 3
activate participant //激活 消息 deactivate participant //释放激活
这个有一些抽象我们用一个场景来去理解
场景1:
```
张三:hi李四你还好么
// 李四听了开始回话 此时李四是激活状态 开始进行对话
李四:hi张三我可以听到你,我很好,不用担心。
//李四会话结束 不会再跟张三有活动 此时李四的激活状态被释放
```
源代码:
```
```mermaid
sequenceDiagram
participant Z as 张三
participant L as 李四
Z->>L:hi李四你还好么
activate L
L->>Z:hi张三我可以听到你,我很好,不用担心。
deactivate L
```
```
生成效果:
|
|
场景2:
|
|
-
源代码:
1 2 3 4 5 6 7 8 9 10 11 12 13
```mermaid sequenceDiagram participant Z as 张三 participant L as 李四 Z->>L:hi李四你还好么 activate L Z->>L:你可以听到我说话么 activate L L->>Z:hi张三我可以听到你 deactivate L L->>Z:我很好,不用担心。 deactivate L
-
生成效果:
1 2 3 4 5 6 7 8 9 10 11 12
sequenceDiagram participant Z as 张三 participant L as 李四 Z->>L:hi李四你还好么 activate L Z->>L:你可以听到我说话么 activate L L->>Z:hi张三我可以听到你 deactivate L L->>Z:我很好,不用担心。 deactivate L
时序图-批注 Note
-
语法:
-
单个对象:
Note 位置 of participant:批注内容
-
多个对象:
Note 位置 角色名称1,角色名称2:批注内容
-
-
位于对象左侧:
-
源代码
1 2 3 4
```mermaid sequenceDiagram participant 张三 Note left of 张三 :我是张三
-
生成效果
1 2 3 4 5 6 7
sequenceDiagram participant 张三 Note left of 张三 :我是张三 ```mermaid sequenceDiagram participant 张三 Note right of 张三 :我是张三
1 2 3 4
sequenceDiagram participant 张三 participant 李四 Note over 张三,李四 :我是张三
-
时序图-逻辑循环 Loop
交互过程中表示某些循环的环节
-
语法:
1 2 3 4
loop 循环描述 循环内容 end //结束标记 复制代码
-
场景:
李四跟张三是好朋友 李四生病了 张三很关心他 每过一小时 为了不让张三如此担心 李四就约定每一个小时给张三发消息
-
源代码:
1 2 3 4 5 6 7 8
```mermaid sequenceDiagram participant 张三 participant 李四 张三->>李四:李四你好么 loop 每过一小时李四发消息给张三 李四 --> 张三:我很好 end
-
生成效果:
1 2 3 4 5 6 7
sequenceDiagram participant 张三 participant 李四 张三->>李四:李四你好么 loop 每过一小时李四发消息给张三 李四 --> 张三:我很好 end
时序图 抉择(Alt)&选项(Opt)
组合片段用来解决交互执行的条件及方式。它允许在序列图中直接表示逻辑组件,用于通过指定条件或子进程的应用区域,为任何生命线的任何部分定义特殊条件和子进程。
Alt 抉择
用来指明在两个或更多的消息序列之间的互斥的选择,相当于经典的if..else..
只能发生一种情况
- 语法:
|
|
-
场景:
1 2 3 4
场景:张三:李四你还好么 如果李四生病了他会说:我不是很好 如果李四很健康他会说:我很好 又是很好的一天 复制代码
-
源代码:
1 2 3 4 5 6 7 8 9 10
```mermaid sequenceDiagram participant 张三 participant 李四 张三 ->>李四:你生病了么 alt 第一种情况描述 李四-->>张三:是的,我很难受 else 剩余情况描述 李四-->>张三:我没生病,挺好的 end
-
生成效果:
1 2 3 4 5 6 7 8 9
sequenceDiagram participant 张三 participant 李四 张三 ->>李四:你生病了么 alt 第一种情况描述 李四-->>张三:是的,我很难受 else 剩余情况描述 李四-->>张三:我没生病,挺好的 end
-
opt 选择"
包含一个可能发生或不发生的序列 就是一种场景有可能发生也有可能不发生
-
语法:
1 2 3 4
opt 情况描述 有可能发生的动作 end 复制代码
-
场景:
1 2 3
场景:张三:李四你还好么 李四会可能会说谢谢你的问候也可能不会说 这个并无法预测 复制代码
-
源代码:
1 2 3 4 5 6 7 8
```mermaid sequenceDiagram participant 张三 participant 李四 张三 ->>李四:你还好么 opt 可能的回答 李四-->>张三:谢谢你的问候 end
-
生成效果:
1 2 3 4 5 6 7
sequenceDiagram participant 张三 participant 李四 张三 ->>李四:你还好么 opt 可能的回答 李四-->>张三:谢谢你的问候 end
-
时序图 并行关系 par
并行处理:
一个对象同时发出的交互动作
-
基本语法:
1 2 3 4 5 6
par 动作描述1 participant1 ->> participant2: 内容 and 动作描述2 participant1 ->> participant3: 内容 end 复制代码
-
场景:
1 2 3 4 5
participants: 张三 李四 王五 张三 在下午5点分别给李四和王五分一条信息:内容是吃了么 李四回复:吃了 张三回复:没吃 复制代码
-
源代码
1 2 3 4 5 6 7 8 9 10 11 12 13
```mermaid sequenceDiagram autonumber participant 张三 participant 李四 participant 王五 par [给李四发消息] 张三 ->> 李四: 吃了么 and [王五发送消息] 张三 ->> 王五: 吃了么 end 李四 ->> 张三:没吃呢 王五 ->> 张三:吃了
-
生成效果
-
-
|
|
嵌套语法:
|
|
-
场景:
1 2 3 4 5
participants: 张三 李四 王五 赵六 A8 王五明天请吃饭 张三发消息问李四明天去不去 同时发消息给王五问明天都有哪些人参加 王五发消息给赵六:明天一起吃饭8 同事也发消息给A8告诉他让他带着小伙伴一起 复制代码
-
源代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
```mermaid sequenceDiagram participant 张三 participant 李四 participant 王五 participant 张三 participant 赵六 participant A8 par 张三发消息给李四 张三 -->> 李四:明天王5请客吃饭 and 张三发消息给王五 张三 -->> 王五: 明天吃饭都有谁呢 end par 王五发消息给赵六 王五->>赵六:明天准时到场哈 and 王五发消息给A8 王五 ->>A8:明天带上你的伙伴一起来哈 end
-
生成效果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
sequenceDiagram participant 张三 participant 李四 participant 王五 participant 赵六 participant A8 par 张三发消息给李四 张三 -->> 李四:明天王5请客吃饭 and 张三发消息给王五 张三 -->> 王五: 明天吃饭都有谁呢 end par 王五发消息给赵六 王五->>赵六:明天准时到场哈 and 王五发消息给A8 王五 ->>A8:明天带上你的伙伴一起来哈 end
-
背景高亮
-
语法:
1 2
rect rgba(0,213,123) 复制代码
-
源代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
```mermaid sequenceDiagram participant 张三 participant 李四 participant 王五 participant 张三 participant 赵六 participant A8 par 张三发消息给李四 rect rgba(0,113,133) 张三 -->> 李四:明天王5请客吃饭 end and 张三发消息给王五 rect rgba(0,113,133) 张三 -->> 王五: 明天吃饭都有谁呢 end end par 王五发消息给赵六 rect rgba(0,213,123) 王五->>赵六:明天准时到场哈 end and 王五发消息给A8 rect rgba(0,213,123) 王五 ->>A8:明天带上你的伙伴一起来哈 end end
-
生成效果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
sequenceDiagram participant 张三 participant 李四 participant 王五 participant 张三 participant 赵六 participant A8 par 张三发消息给李四 rect rgba(0,113,133) 张三 -->> 李四:明天王5请客吃饭 end and 张三发消息给王五 rect rgba(0,113,133) 张三 -->> 王五: 明天吃饭都有谁呢 end end par 王五发消息给赵六 rect rgba(0,213,123) 王五->>赵六:明天准时到场哈 end and 王五发消息给A8 rect rgba(0,213,123) 王五 ->>A8:明天带上你的伙伴一起来哈 end end
类图
|
|
状态图
|
|
实体关系图
|
|
用户旅程图
|
|
gantt图
|
|
饼图
|
|
需求图
|
|