前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mermaid 语法

mermaid 语法

作者头像
三流编程
发布2018-09-11 16:28:45
18.3K5
发布2018-09-11 16:28:45
举报

文档

语句末尾分号是可选的。%% 行注释。

流程图

代码语言:javascript
复制
graph TD;
    A-->B;
    A-->C;
    B-->D;
    C-->D;

方向:

  • TB/TD - top bottom
  • BT - bottom top
  • RL - right left
  • LR - left right
代码语言:javascript
复制
graph TB
    Start --> Stop

节点

代码语言:javascript
复制
graph LR
    id
代码语言:javascript
复制
graph LR
    id[带文字节点]
代码语言:javascript
复制
graph LR
    id(圆角节点)
代码语言:javascript
复制
graph LR
    id((圆形节点))
代码语言:javascript
复制
graph LR
    id>不对称节点]
代码语言:javascript
复制
graph LR
    id{菱形节点}

连接线

实线,箭头,无文字

代码语言:javascript
复制
graph LR
    A-->B

实线,无箭头,无文字

代码语言:javascript
复制
graph LR
    A---B

实线,无箭头,文字

前面两个 -,后面三个 -

代码语言:javascript
复制
graph LR
    A-- 文字 ---B

代码语言:javascript
复制
graph LR
    A--- |文字| B

实线,箭头,文字

代码语言:javascript
复制
graph LR
    A-- 文字 -->B

代码语言:javascript
复制
graph LR
    A--> |文字| B

虚线,箭头,无文字

代码语言:javascript
复制
graph LR;
   A-.->B;

虚线,箭头,文字

代码语言:javascript
复制
graph LR
   A-. text .-> B

大箭头,无文字

代码语言:javascript
复制
graph LR
   A ==> B

大箭头,文字

代码语言:javascript
复制
graph LR
   A == text ==> B

特殊语法

引号

文字里用引号避免一些特殊字符的错误。比如矩形节点里有 () 时就无法渲染,所以加上引号。

代码语言:javascript
复制
graph LR
    id1["This is the (text) in the box"]

实体字符

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

代码语言:javascript
复制
graph LR
     A["A double quote:#quot;"] -->B["A dec char:#9829;"]

子图

代码语言:javascript
复制
graph TB
    c1-->a2
    subgraph one
    a1-->a2
    end
    subgraph two
    b1-->b2
    end
    subgraph three
    c1-->c2
    end

样式

linkStyle 后面的数字表示第几根线,从 0 开始。可以指定颜色和粗细。

代码语言:javascript
复制
graph TD;
    A-->B;
    A-->C;
    B-->D;
    C-->D;
    linkStyle 0 stroke:#0ff,stroke-width:2px;
    linkStyle 3 stroke:#ff3,stroke-width:4px;

可以设置节点背景,边框颜色,粗细,实线还是虚线

代码语言:javascript
复制
graph LR
    id1(Start)-->id2(Stop)
    style id1 fill:#f9f,stroke:#333,stroke-width:4px
    style id2 fill:#ccf,stroke:#f66,stroke-width:2px,stroke-dasharray: 5, 5

样式类

代码语言:javascript
复制
graph LR
    A-->B

    %% 定义样式类
    classDef className fill:#f9f,stroke:#333,stroke-width:4px;

    %% 应用样式类,markdown里没效果
    class A className
代码语言:javascript
复制
classDef default fill:#f9f,stroke:#333,stroke-width:4px;

定义一个名为 default 的类,节点没有指定特定样式类时,将都会应用这个样式类。

图标

可以使用 Font Awesome 图标。语法 fa:icon class name

代码语言:javascript
复制
graph TD
   B["fa:fa-twitter for peace"]
   B-->C[fa:fa-ban forbidden]
   B-->D(fa:fa-spinner);
   B-->E(A fa:fa-camera-retro perhaps?);

时序图

代码语言:javascript
复制
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 <br/>prevail...
    John-->Alice: Great!
    John->Bob: How about you?
    Bob-->John: Jolly good!

参与者

如果不显示声明,参与者将根据第一次出现的顺序排列,如:

代码语言:javascript
复制
sequenceDiagram
    Alice->>John: Hello John, how are you?
    John-->>Alice: Great!

第一条语句出现了两个参与者角色,而在这条语句中,Alice 在 John 之前,所以图中也是这个顺序。如果不想根据第一次出现的顺序来排,可以主动声明以定义顺序:

代码语言:javascript
复制
sequenceDiagram
    participant John
    participant Alice
    Alice->>John: Hello John, how are you?
    John-->>Alice: Great!

别名

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

代码语言:javascript
复制
sequenceDiagram
    participant A as Alice
    participant J as John
    A->>J: Hello John, how are you?
    J->>A: Great!

消息

消息连线有六种样式。

一个-是实线,两个-是虚线。

代码语言:javascript
复制
sequenceDiagram
    A->B: 无箭头实线
    A-->B: 无箭头虚线(点线)
    A->>B: 有箭头实线
    A-->>B: 有箭头实线
    A-x B: 有箭头实线,加上叉
    A--x B: 有箭头虚线,加上叉

活动期

代码语言:javascript
复制
sequenceDiagram
    Alice->>John: Hello John, how are you?
    %% activate 角色名 表示激活控制焦点
    activate John
    John-->>Alice: Great!
    %% deactivate 角色名 表示控制焦点结束
    deactivate John

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

代码语言:javascript
复制
sequenceDiagram
    Alice->>+John: Hello John, how are you?
    John-->>-Alice: Great!

可以嵌套:

代码语言:javascript
复制
sequenceDiagram
    Alice->>+John: Hello John, how are you?
    Alice->>+John: John, can you hear me?
    John-->>-Alice: Hi Alice, I can hear you!
    John-->>-Alice: I feel great!

备注

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

代码语言:javascript
复制
sequenceDiagram
    participant John
    Note right of John: Text in note

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

代码语言:javascript
复制
sequenceDiagram
    Alice->John: Hello John, how are you?
    Note over Alice,John: A typical interaction

循环

语法:

代码语言:javascript
复制
loop Loop text
... statements ...
end
代码语言:javascript
复制
sequenceDiagram
    Alice->John: Hello John, how are you?
    %% loop 后跟循环体说明文字
    loop Every minute
        John-->Alice: Great!
    %% 标记循环结束
    end

选择

语法:

代码语言:javascript
复制
alt Describing text
... statements ...
else
... statements ...
end

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

代码语言:javascript
复制
opt Describing text
... statements ...
end
代码语言:javascript
复制
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
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.09.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 流程图
    • 方向:
      • 节点
        • 连接线
          • 实线,箭头,无文字
          • 实线,无箭头,无文字
          • 实线,无箭头,文字
          • 实线,箭头,文字
          • 虚线,箭头,无文字
          • 虚线,箭头,文字
          • 大箭头,无文字
          • 大箭头,文字
        • 特殊语法
          • 引号
          • 实体字符
        • 子图
          • 样式
            • 样式类
          • 图标
          • 时序图
            • 参与者
              • 别名
            • 消息
              • 活动期
                • 备注
                  • 循环
                    • 选择
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档