之前我写博客都是使用上传图片的方式来展示流程图,这种方法比较麻烦,还要自己画,考虑到markdown 语法非常流行,越来越多的人使用 markdown 来写csdn 博客,所以我想能不能用 markdown 快速的绘制流程图呢?答案是肯定的,本篇博客讲述如何使用markdown 语法来进行流程图绘制,语法比较简单,画出的流程图也比较好看。
使用mermaid 绘制流程图
一般语法结果如下所示:
```mermaid
graph 方向
内容 ……
```
方向
方向一共有4个,格式为从哪到哪,每一个方向由两个大写字母表示,大写字母是四个基本方向: 上:Top,下:Bottom,左:Left,右:Right 的首字母。
- 从上到下:TB (有时候也写作 TD)
- 从下到上:BT
- 从左到右:LR
- 从右到左:RL
内容
流程图主要由以下几种元素组成:
- 基本节点图形
- 连接线
- 连接线上的注释
下面将分别介绍
1.基本节点图像
基本节点图像由两部分组成,一个唯一的id,用于标记节点的身份;节点内的注释内容。基本图像如图所示
分别表示如下:
- 矩形的情况:id1[矩形]
- 圆角矩形的情况:id2(圆角矩形)
- 不对称矩形情况:id3>不对称矩形]
- 菱形情况:id4{菱形}
- 圆形情况:id5((圆形))
源代码:
```mermaid
graph TB
id[矩形]
id4(圆角矩形)
id3>不对称矩形]
id1{菱形}
id2((圆形))
```\
2.连接线
- A --> B:A带箭头指向B
- A — B: A不带箭头指向B
- A -.- B: A用虚线指向B
- A -.-> B: A用带箭头的虚线指向B
- A ==> B: A用加粗的箭头指向B
示意图如下:
源代码如下
```mermaid
graph TD
A[A] --> B[B]
A1[A] --- B1[B]
A4[A] -.- B4[B]
A5[A] -.-> B5[B]
A7[A] ==> B7[B]
```\
复制的时候去掉反斜杠
3.连接线上的注释
连接线上的注释其实就是在中间的位置加上注释
- A – 描述 — B :A不带箭头指向B并在中间加上文字描述
- A – 描述 --> B: A带箭头指向B并在中间加上文字描述
- A -. 描述 .-> B :A用带箭头的虚线指向B并在中间加上文字描述
- A == 描述 ==> B :A用加粗的箭头指向B并在中间加上文字描述
示意图如下:
源代码如下:
```mermaid
graph TB
A[A] -- 描述 --- B[B]
A2[A] -- 描述 --> B2[B]
A3[A] -. 描述 .-> B3[B]
A4[A] == 描述 =\=> B4[B]
```\
参考样例
以下参考样例来自 菜鸟教程,原文地址
1.标准流程图
实现代码:
```mermaid
flowchat
st=>start: 开始框
op=>operation: 处理框
cond=>condition: 判断框(是或否?)
sub1=>subroutine: 子流程
io=>inputoutput: 输入输出框
e=>end: 结束框
st->op->cond
cond(yes)->io->e
cond(no)->sub1(right)->op
```\
2. 标准流程图(横向,注意看代码不同点)
实现代码:
```mermaid
flowchat
st=>start: 开始框
op=>operation: 处理框
cond=>condition: 判断框(是或否?)
sub1=>subroutine: 子流程
io=>inputoutput: 输入输出框
e=>end: 结束框
st(right)->op(right)->cond
cond(yes)->io(bottom)->e
cond(no)->sub1(right)->op
```\
3. UML时序图
实现代码:
```mermaid
sequenceDiagram
对象A->>对象B: 对象B你好吗?(请求)
Note right of 对象B: 对象B的描述
Note left of 对象A: 对象A的描述(提示)
对象B-->>对象A: 我很好(响应)
对象A->>对象B: 你真的好吗?
```\
4.UML 时序图(复杂版)
实现代码:
```mermaid
sequenceDiagram
Title: 标题:复杂使用
对象A->>对象B: 对象B你好吗?(请求)
Note right of 对象B: 对象B的描述
Note left of 对象A: 对象A的描述(提示)
对象B-->>对象A: 我很好(响应)
对象B->>小三: 你好吗
小三-->>对象A: 对象B找我了
对象A->>对象B: 你真的好吗?
Note over 小三,对象B: 我们是朋友
participant C
Note right of C: 没人陪我玩
```\
5.UML 标准时序图
实现代码:
```mermaid
%% 时序图例子,-> 直线,-->虚线,->>实线箭头
sequenceDiagram
participant 张三
participant 李四
张三->王五: 王五你好吗?
loop 健康检查
王五->王五: 与疾病战斗
end
Note right of 王五: 合理 食物 <br/>看医生...
李四-->>张三: 很好!
王五->李四: 你怎么样?
李四-->王五: 很好!
```\
6.甘特图
实现代码:
```mermaid
gantt
dateFormat YYYY-MM-DD
title 软件开发甘特图
section 设计
需求 :done, des1, 2014-01-06,2014-01-08
原型 :active, des2, 2014-01-09, 3d
UI设计 : des3, after des2, 5d
未来任务 : des4, after des3, 5d
section 开发
学习准备理解需求 :crit, done, 2014-01-06,24h
设计框架 :crit, done, after des2, 2d
开发 :crit, active, 3d
未来任务 :crit, 5d
耍 :2d
section 测试
功能测试 :active, a1, after des3, 3d
压力测试 :after a1 , 20h
测试报告 : 48h
```\
来源:CSDN
作者:假装很坏的谦谦君
链接:https://blog.csdn.net/qq_38863413/article/details/104208505