有没有不收费还简单的流程图制作方法:Mermaid了解一下

无论是作报告还是梳理知识点,流程图和结构图都能起到画龙点睛的用处,而在实际办公的过程中,如果你可以很快做出一个漂亮的结构图,相信老板肯定会对你刮目相看,今天就带大家一起学习一下如何利用

Mermaid的在线编辑平台,快速做出一个漂亮的图。

再高深的前端知识小编不懂,仅面向不是很懂变成编程,或者只是需要做结构图的人。

先来看几个样品:

话不多说,先把平台连接发出来:

https://mermaidjs.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoiZ3JhcGggVERcbkFbQ2hyaXN0bWFzXSAtLT58R2V0IG1vbmV5fCBCKEdvIHNob3BwaW5nKVxuQiAtLT4gQ3tMZXQgbWUgdGhpbmt9XG5DIC0tPnxPbmV8IERbTGFwdG9wXVxuQyAtLT58VHdvfCBFW2lQaG9uZV1cbkMgLS0-fFRocmVlfCBGW2ZhOmZhLWNhciBDYXJdXG4iLCJtZXJtYWlkIjp7InRoZW1lIjoiZGVmYXVsdCJ9fQ

下面我们一步一步的做出结构图:

作图方向:

graph TD

Start --> Stop

第一行的graph LR中graph指定是一个图,第二个TD指定图的方向,所有的方向关键词为:

TB - top bottom:从上到下BT - bottom top:从下到上RL - right left:从右向左LR - left right:从左向右TD - same as TB:从上到下

graph LR;

A[aa bb]-->B(wo);

A-->C((我是C));

B-->D>我是D];

C-->D;

D-->E{我是E};

C-->E;

2-->E;

连线的形式:

A --> B A带箭头指向BA --- B A不带箭头指向BA -.- B A用虚线指向BA -.-> B A用带箭头的虚线指向BA ==> B A用加粗的箭头指向BA -- 描述 --- B A不带箭头指向B并在中间加上文字描述A -- 描述 --> B A带箭头指向B并在中间加上文字描述A -. 描述 .-> B A用带箭头的虚线指向B并在中间加上文字描述A == 描述 ==> B A用加粗的箭头指向B并在中间加上文字描述

graph TD

A[A] --> B[B]

A1[A] --- B1[B]

A4[A] -.- B4[B]

A5[A] -.-> B5[B]

A7[A] ==> B7[B]

A2[A] -- 描述 --- B2[B]

A3[A] -- 描述 --> B3[B]

A6[A] -. 描述 .-> B6[B]

A8[A] == 描述 ==> B8[B]

节点形状:

大写字母表示节点,name表示节点的名字,主要形状如下:

文本节点 B[bname]圆角节点 C(cname)圆形节点 D((dname))非对称节点 E>ename]菱形节点 F{fname}

实体字符:可以使用 HTML 中的实体字符。

graph LR

A["A double quote:#quot;"] -->B["A dec char:#9829;"]

这个网址有很多:https://www.cnblogs.com/mengmengi/p/10137167.html

直接替换就可以:

增加渲染:

graph LR

id1(Start)-->id2(Stop)

style id1 fill:#f9f,stroke:#333,stroke-width:4px;

style id2 fill:#f00,stroke:#000,stroke-width:2px,stroke-dasharray:5,5;

style id1 fill:#f9f,stroke:#000,stroke-width:2px,stroke-dasharray:5,5;

fill:#f9f表示框框中填充的颜色,由RGB表示,但只有0~F,如#f00表示填充红色

stroke:#000,表示外框的颜色,也是由RGB表示

stroke-width:2px,表示外框短线的宽度为2个像素,

stroke-dasharray:5,5;表示外框短线的长度,等于方框的边长除以5

如果有很多需要设置为一样的格式,也可以定于类重复调用:

graph LR

classDef className fill:#f9f,stroke:#333,stroke-width:4px;

class nodeId className;

id1(Start)-->id2(Stop)

id3(Start)-->id4(Stop)

id5(Start)-->id6(Stop)

class id1 className;

class id3 className;

class id4 className;

class id5 className;

style id2 fill:#f00,stroke:#000,stroke-width:2px,stroke-dasharray:5,5;

下面讲一下不同的图表类型:

子流程图

graph TB

c1-->a2

subgraph one

a1-->a2

end

subgraph two

b1-->b2

end

subgraph three

c1-->c2

end

graph TB:描述了作图的方向

subgraph three:将区域分类标注

时序图:

sequenceDiagram

participant Alice

participant Bob

Alice->John: Hello John, how are you?

loop Healthcheck

John->John: Fight against hypochondria

end

Note right of John: Rational thoughts
prevail...

John-->Alice: Great!

John->Bob: How about you?

Bob-->John: Jolly good!

做一个消息图:

sequenceDiagram

participant A as Alice

participant J as John

A->>J: Hello John, how are you?

J->>A: Great!

添加个备注:

语法:Note [ right of | left of | over ] [Actor]。

over 可用于单独一个角色上,也可以用于相邻两个角色间:

别名

可以给角色写一个简短的别名以方便书写。

sequenceDiagram

participant A as Alice

participant J as John

A->>J: Hello John, how are you?

J->>A: Great!

注释: %% activate 角色名 表示激活控制焦点

活动期:

sequenceDiagram

Alice->>John: Hello John, how are you?

%% activate 角色名 表示激活控制焦点

activate John

John-->>Alice: Great!

%% deactivate 角色名 表示控制焦点结束

deactivate John

使用 +/- 的更方便的写法:

循环

loop Loop text

... statements ...

end

sequenceDiagram

Alice->John: Hello John, how are you?

%% loop 后跟循环体说明文字

loop Every minute

John-->Alice: Great!

%% 标记循环结束

end

选择

语法:

alt Describing text

... statements ...

else

... statements ...

end

可选条件,比如在没有 else 分支的情况下使用,有点类似 java 中的 switch 的 default 分支,代表剩下所有情况。

opt Describing text

... statements ...

end

sequenceDiagram

Alice->>Bob: Hello Bob, how are you?

alt is sick

Bob->>Alice: Not so good :(

else is well

Bob->>Alice: Feeling fresh like a daisy

end

opt Extra response

Bob->>Alice: Thanks for asking

end

甘特图:

gantt

   dateFormat YYYY-MM-DD

   title Adding GANTT diagram functionality to mermaid

   section A section

   Completed task  :done, des1, 2014-01-06,2014-01-08

   Active task     :active, des2, 2014-01-09, 3d

   future task     :    des3, after des2, 5d

   future task2    :    des4, after des3, 5d

   section Critical tasks

   Completed task in the critical line :crit, done, 2014-01-06,24h

   Implement parser and json      :crit, done, after des1, 2d

   Create tests for parser       :crit, active, 3d

   Future task in critical line     :crit, 5d

   Create tests for renderer      :2d

   Add to ,mermaid           :1d

关键词说明:

使用关键词gantt声明甘特图title—标题dateFormat—日期格式section—声明板块Completed—已经完成Active—当前正在进行Future—后续待处理crit—关键阶段

时间参数:

甘特图:学习网站:https://www.yuque.com/yuque/help/gantt