Mermaid是一种开源的,简单易学的,支持多种图表的语义化标记语言。它使用markdown样式的语法,可以轻松地创建流程图、时序图、甘特图等丰富多彩的图表。
一、基本概念
Mermaid语法是基于markdown语法的,因此它的语法非常简单易学。它的核心是通过给定节点和关系来定义图表,节点的类型可以是实体、子流程等等,关系也可以是不同的类型。
graph LR; //定义一个图表,LR表示从左到右的方向
A-->B; //表示A与B之间有一条箭头连接,箭头指向B
B-->C; //表示B与C之间有一条箭头连接,箭头指向C
在上面的例子中,我们定义了一个从左到右的图表,由三个节点A、B、C组成,其中A指向B,B指向C。这三个节点之间的关系可以用五种不同的类型表示:
- -->表示单向箭头
- -->>表示单向箭头带label
- ==表示双向箭头
- ==>表示双向箭头带label
- --x表示有线段连接的节点关系
使用这些节点类型和关系类型,我们可以轻松地创建丰富多彩的图表。
二、流程图
流程图是Mermaid中最基本的图表类型之一,它通常用于描述一个过程或者系统的流程。下面是一个简单的流程图例子:
graph TB; //定义一个向下的流程图
开始-->预处理; //开始节点与预处理节点之间有一个箭头,箭头指向预处理
预处理-->|未完成|处理A;
预处理-->|已完成|处理B;
处理A-->处理B; //处理A节点与处理B节点之间有一个箭头,箭头指向处理B
处理B-->结束; //处理B节点与结束节点之间有一个箭头,箭头指向结束
在上面的例子中,我们定义了一个向下的流程图,共有五个节点:开始、预处理、处理A、处理B、结束。其中预处理与处理B之间有两种不同的关系类型:未完成和已完成,这两种关系都带有label。
三、序列图
序列图是Mermaid中另一个基本的图表类型,它通常用于描述多个对象之间的交互过程。下面是一个简单的序列图例子:
sequenceDiagram; //定义一个序列图
participant Alice; //定义一个参与者节点,名称为Alice
participant Bob; //定义另一个参与者节点,名称为Bob
Alice->>Bob: Hello Bob, how are you? //Alice向Bob发送消息
Bob-->>Alice: I'm fine, thanks. //Bob向Alice返回消息
在上面的例子中,我们定义了一个序列图,共有两个参与者节点:Alice和Bob。其中,Alice向Bob发送了一条消息,Bob回复了Alice的消息。
四、甘特图
甘特图是Mermaid中比较特殊的一个图表类型,它通常用于描述一个任务在时间轴上的分布情况。下面是一个简单的甘特图例子:
gantt; //定义一个甘特图
dateFormat YYYY-MM-DD; //定义日期格式
title 项目计划; //定义图表标题
section 设计; //定义图表的第一部分,名称为设计
开始日期 : 2018-01-01, 2d; //第一段任务的开始日期和天数
设计阶段1 : done, 开始日期, 1d; //第二段任务的开始日期和天数,以及完成状态
设计阶段2 : done, 设计阶段1, 1d; //第三段任务的开始日期和天数,以及完成状态
设计阶段3 : active, 设计阶段2, 2d; //第四段任务的开始日期和天数,以及激活状态
section 开发; //定义图表的第二部分,名称为开发
开发阶段1 : active, 设计阶段3, 3d;
开发阶段2 : 开发阶段1, 2d;
开发阶段3 : 开发阶段2, 2d;
section 测试; //定义图表的第三部分,名称为测试
测试阶段1 : 开发阶段3, 3d;
测试阶段2 : 测试阶段1, 2d;
测试阶段3 : 测试阶段2, 2d;
section 部署; //定义图表的第四部分,名称为部署
部署阶段1 : 测试阶段3, 3d;
部署阶段2 : 部署阶段1, 2d;
部署阶段3 : 部署阶段2, 2d;
section 维护; //定义图表的第五部分,名称为维护
维护阶段1 : 部署阶段3, 3d;
维护阶段2 : 维护阶段1, 2d;
维护阶段3 : 维护阶段2, 2d;
在上面的例子中,我们定义了一个甘特图,共有五个部分:设计、开发、测试、部署、维护。每个部分中又包含了不同的任务节点,其中done表示任务已经完成,active表示任务正在进行中。
五、公式图
Mermaid还支持公式图,它可以用来描述一些复杂的数学公式。下面是一个简单的公式图例子:
graph TB; //定义一个向下的图表
A((x ))-->B(((y ))); //定义两个节点,节点名称包含一个空格,中间加上< >表示公式图
B-->C(( z )); //定义另一个节点,节点名称包含一个空格,中间加上< >表示公式图
在上面的例子中,我们定义了三个节点A、B、C,其中节点名称包含一个空格,中间使用< >符号表示公式图。
六、结语
通过以上的介绍,我们可以了解到Mermaid是一种简单易学的标记语言,有着丰富的图表类型和灵活的语法结构。我们可以利用Mermaid创建各种不同类型的图表,从而更好地展示我们的想法和数据。