您的位置:

探索mermaid语法

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创建各种不同类型的图表,从而更好地展示我们的想法和数据。