方向:

命令 方向
TB(TD) 从上到下
BT 从下到上
RL 从右到左
LR 从左到右

TB 命令

源码:

```mermaid
    graph TB
    A --> B
```

效果:

AB

TD 命令

源码:

```mermaid
    graph TD
    A --> B
```

效果:

AB

BT 命令

源码:

```mermaid
    graph BT
    A --> B
```

效果:

AB

RL 命令:

源码:

```mermaid
    graph RL
    A --> B
```

效果:

AB

LR 命令:

源码:

```mermaid
    graph LR
    A --> B
```

效果:

AB

节点形状

命令 形状
A[text] 文本框(默认形状)
B(text) 圆角框
E((text)) 圆形框
F>text] 非对称框
G{text} 菱形框

源码:

```mermaid
    graph TB
    A[text]
    B(text)
    C((text))
    D>text]
    E{text}
```

效果:

texttexttexttexttext

连线形状

源码:

```mermaid
    graph TB
    A1 --> B1
    A2 --- B2
    A3 -.-> B3
    A4 -.- B4
    A5 === B5
    A6 ==> B6
```

效果:

A1B1A2B2A3B3A4B4A5B5A6B6

源码:

```mermaid
    graph TB
    A1 --text--> B1
    A2 ---|text| B2
    A3 -.text.-> B3
    A4 -.-|text| B4
    A5 ==text=== B5
    A6 ==>|text| B6
```

效果:

texttexttexttexttexttextA1B1A2B2A3B3A4B4A5B5A6B6

多个节点之间的多个连线:
源码:

```mermaid
    graph TB
    A --> D
    A --> E
    A --> F
    B -.-> F
    C -.-> F
```

效果:

ADEFBC

子流程图

源码:

```mermaid
    graph TB
    subgraph one
        A1 --> B1
    end
    subgraph two
        A2 === B2
    end
    subgraph three
        A3 -.-> B2
    end
```

效果:

three two oneA3B2A2A1B1

注释

graph流程图中以 %% 为开头注释一行。

```mermaid
    graph LR
    A --> B %%此处为注释
```

链接

源码:

```mermaid
graph LR;
    A-->B;
    click A "https://www.asciim.cn"
```

效果:

AB

注: 点击上图A,则会调整到 https://www.asciim.cn

子图表

语法格式:

```mermaid
    subgraph 子图表名称
        子图表中的描述语句...
    end
```

源码:

```mermaid
graph TB
    id1(圆角矩形)--普通线-->id2[矩形]
    subgraph 子图表
        id2==粗线==>id3{菱形}
        id3-.虚线.->id4>右向旗帜]
        id3--无箭头---id5((圆形))
    end
```

效果:

子图表普通线粗线虚线无箭头矩形菱形右向旗帜圆形圆角矩形

序列图

使用以下语法格式,开始序列图:

```mermaid
sequenceDiagram
    [参与者1][消息线][参与者2]:消息体
```

源码:

```mermaid    
sequenceDiagram
    张三->>李四: 吃了吗?
    李四->>张三: 吃了
```

效果:

张三李四吃了吗?吃了张三李四

参与者

上例中的张三、李四都是参与者,上例中的语法是最简单的,也可以明显表明参与者有哪些:

语法格式:

```mermaid
sequenceDiagram
    participant 参与者 1
    participant 参与者 2
    ...
    participant 简称 as 参与者 3 #该语法可以在接下来的描述中使用简称来代替参与者 3
```

消息线

类型 描述
-> 无箭头的实线
–> 无箭头的虚线
->> 有箭头的实线
–>> 有箭头的虚线
-x 末端为叉的实线(表示异步)
–x 末端为叉的虚线(表示异步)

处理中

在消息线末尾增加 + ,则消息接收者进入当前消息的“处理中”状态;
在消息线末尾增加 - ,则消息接收者离开当前消息的“处理中”状态。

或者使用以下语法直接说明某个参与者进入“处理中”状态:

activate 参与者

标注

语法如下

Note 位置表述 参与者: 标注文字

位置表述:
right of 右侧
left of 左侧
over 在当中,可以横跨多个参与者

循环

语法如下

loop 循环的条件
    循环体描述语句
end

判断

alt 条件 1 描述
    分支 1 描述语句
else 条件 2 描述 # else 分支可选
    分支 2 描述语句
else ...
    ...
end

如果遇到可选的情况,即没有 else 分支的情况,使用如下语法:

opt 条件描述
    分支描述语句
end

综合举例:

源码:

```mermaid
sequenceDiagram
    participant z as 张三
    participant l as 李四
    loop 日复一日
        z->>l: 吃了吗您呐?
        l-->>z: 吃了,您呢?
        activate z
        Note left of z: 想了一下
        alt 还没吃
            z-xl: 还没呢,正准备回去吃
        else 已经吃了
            z-xl: 我也吃过了,哈哈
        end
        opt 大过年的
            l-->z: 祝您新年好啊
        end
    end
```

格式:

张三李四吃了吗您呐?吃了,您呢?想了一下还没呢,正准备回去吃我也吃过了,哈哈alt[ 还没吃 ][ 已经吃了 ]祝您新年好啊opt[ 大过年的 ]loop[ 日复一日 ]张三李四

甘特图(gantt)

甘特图是一类条形图,由Karol Adamiechi在1896年提出, 而在1910年Henry Gantt也独立的提出了此种图形表示。通常用在对项目终端元素和总结元素的开始及完成时间进行的描述。

简单的甘特图,举例

源码:

```mermaid
    gantt
    dateFormat YYYY-MM-DD

    section S1
    T1: 2014-01-01, 9d

    section S2
    T2: 2014-01-11, 9d

    section S3
    T3: 2014-01-02, 9d
```

效果:

01/0601/1301/20T1T2T3S1S2S3

复杂的甘特图,举例:

源码:

```mermaid
    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 jison          :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

    section Documentation
    Describe gantt syntax               :active, a1, after des1, 3d
    Add gantt diagram to demo page      :after a1  , 20h
    Add another diagram to demo page    :doc1, after a1  , 48h

    section Last section
    Describe gantt syntax               :after doc1, 3d
    Add gantt diagram to demo page      : 20h
    Add another diagram to demo page    : 48h

```

效果:

01/0601/1301/20Completed task Active task Future task Future task2 Completed task in the critical line Implement parser and jison Create tests for parser Future task in critical line Create tests for renderer Add to mermaid Describe gantt syntax Add gantt diagram to demo page Add another diagram to demo page Describe gantt syntax Add gantt diagram to demo page Add another diagram to demo page A sectionCritical tasksDocumentationLast sectionAdding GANTT diagram functionality to mermaid
标记 简介
title 标题
dateFormat 日期格式
section 模块
Completed 已经完成
Active 当前正在进行
Future 后续待处理
crit 关键阶段
日期缺失 默认从上一项完成后

关于日期的格式可以参考:
http://momentjs.com/docs/#/parsing/string-format/
https://github.com/mbostock/d3/wiki/Time-Formatting

中文演示:

06/2707/0407/1107/1807/2508/01需求分析 可行性报告 概念验证 概要设计 详细设计 编码 测试 发布验收项目确定项目实施发布验收项目开发流程

引用:
https://www.jianshu.com/p/598b121bdbef
https://www.iminho.me/wiki/docs/mindoc/mermaid.md