Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mermaid 语法

mermaid 语法

作者头像
三流之路
发布于 2018-09-11 08:28:45
发布于 2018-09-11 08:28:45
19.1K515
代码可运行
举报
运行总次数:15
代码可运行

文档

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

流程图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph TD;
    A-->B;
    A-->C;
    B-->D;
    C-->D;

方向:

  • TB/TD - top bottom
  • BT - bottom top
  • RL - right left
  • LR - left right
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph TB
    Start --> Stop

节点

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
    id
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
    id[带文字节点]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
    id(圆角节点)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
    id((圆形节点))
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
    id>不对称节点]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
    id{菱形节点}

连接线

实线,箭头,无文字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
    A-->B

实线,无箭头,无文字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
    A---B

实线,无箭头,文字

前面两个 -,后面三个 -

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
    A-- 文字 ---B

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
    A--- |文字| B

实线,箭头,文字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
    A-- 文字 -->B

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
    A--> |文字| B

虚线,箭头,无文字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR;
   A-.->B;

虚线,箭头,文字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
   A-. text .-> B

大箭头,无文字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
   A ==> B

大箭头,文字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
   A == text ==> B

特殊语法

引号

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
    id1["This is the (text) in the box"]

实体字符

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph LR
     A["A double quote:#quot;"] -->B["A dec char:#9829;"]

子图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
graph TB
    c1-->a2
    subgraph one
    a1-->a2
    end
    subgraph two
    b1-->b2
    end
    subgraph three
    c1-->c2
    end

样式

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
graph LR
    A-->B

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

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

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

图标

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
sequenceDiagram
    Alice->>John: Hello John, how are you?
    John-->>Alice: Great!

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sequenceDiagram
    participant John
    participant Alice
    Alice->>John: Hello John, how are you?
    John-->>Alice: Great!

别名

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sequenceDiagram
    participant A as Alice
    participant J as John
    A->>J: Hello John, how are you?
    J->>A: Great!

消息

消息连线有六种样式。

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sequenceDiagram
    A->B: 无箭头实线
    A-->B: 无箭头虚线(点线)
    A->>B: 有箭头实线
    A-->>B: 有箭头实线
    A-x B: 有箭头实线,加上叉
    A--x B: 有箭头虚线,加上叉

活动期

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sequenceDiagram
    Alice->>+John: Hello John, how are you?
    John-->>-Alice: Great!

可以嵌套:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
sequenceDiagram
    participant John
    Note right of John: Text in note

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sequenceDiagram
    Alice->John: Hello John, how are you?
    Note over Alice,John: A typical interaction

循环

语法:

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

选择

语法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alt Describing text
... statements ...
else
... statements ...
end

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
opt Describing text
... statements ...
end
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
5 条评论
热度
最新
fontawesome图标您能加载出来么,为什么我放在页面没有效果呢
fontawesome图标您能加载出来么,为什么我放在页面没有效果呢
11点赞举报
对呀 我也是 我查找了很多地方 都没有得到答案求解答 !!!
对呀 我也是 我查找了很多地方 都没有得到答案求解答 !!!
回复回复点赞举报
请问用这种语法写出来的文档,如何导出Word文档呢,我试了下,导出Word文档,识别不了里面的语法
请问用这种语法写出来的文档,如何导出Word文档呢,我试了下,导出Word文档,识别不了里面的语法
22点赞举报
markdown 工具导出 pdf 或者渲染出来后截图吧
markdown 工具导出 pdf 或者渲染出来后截图吧
回复回复点赞举报
好吧,PDF是没问题的
好吧,PDF是没问题的
回复回复点赞举报
推荐阅读
markdown绘图插件----mermaid简介
当撰写文档的时候,对于流程图的生成大多使用Visio等繁重的工具,没有一种轻便的工具能够画图从而简化文档的编写,就像markdown那样。
流川疯
2019/01/18
4.8K1
Typero+Mermaid
graph声明了一个新图形和图形布局的方向 TB - 从上到下 BT - 从下到上 RL - 从右到左 LR - 从左到右 TD - 与TB相同
酒楼
2023/12/20
2990
使用AI配合Typora智能画图
本文由 小马哥 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名 最后编辑时间为: 2023/05/25 11:35
IT小马哥
2023/05/26
7220
使用AI配合Typora智能画图
markdown 入门简明指南
在Markdown中,如果想将一段文字定义为标题,只需要在这段文字前面加上 #,再在 # 后加一个空格即可。还可增加二、三、四、五、六级标题,总共六级,只需要增加 # ,增加一个 # ,标题字号相应降低一级。如下:
演化计算与人工智能
2020/08/14
9170
markdown 入门简明指南
【Mermaid】画图工具使用笔记
文章目录 Mermaid简介 Mermaid使用方法 1、流程图(graph) 2、时序图(sequenceDiagram) 3、状态图(stateDiagram) 4、类图 5、甘特图(gantt) 6、饼图(pie) 7、需求图 参考连接 Mermaid简介 Mermaid 允许使用文本和代码创建图表和可视化效果。它是一个基于 JavaScript 的图表绘制和图表工具,可呈现受 Markdown 启发的文本定义,以动态创建和修改图表。 Mermaid使用方法 1、流程图(graph) graph
宝耶需努力
2022/12/13
2.4K0
【Mermaid】画图工具使用笔记
惊呆!原来 markdown 的画图功能如此强大!
Markdown 是一种轻量级标记语言,相比于 xml、html 等超文本标记语言,Markdown 的语法更简单,结构更清晰,更加易读易用。
用户3147702
2022/06/27
10.4K0
惊呆!原来 markdown 的画图功能如此强大!
Typora使用Mermaid绘制各种图
其他连线:需要将graph关键字改为flowchart,除了新增加的连线形式外,上面三种线的渲染效果也会不同
码客说
2023/06/04
2.2K0
Typora使用Mermaid绘制各种图
关于写作那些事之快速上手Mermaid流程图
本文主要介绍了如何快速上手 Mermaid 流程图,不用贴图上传也不用拖拉点拽绘制,基于源码实时渲染流程图,操作简单易上手,广泛被集成于主流编辑器,包括 markdown 写作环境.
雪之梦技术驿站
2020/05/07
3.6K0
关于写作那些事之快速上手Mermaid流程图
Mermaid 时序图常用语法
Cellinlab
2023/10/09
8550
十五分钟让你快速学习Markdown语法到精通排版实践
描述: Markdown 是一种轻量级标记语言于2004年推出,创始人为约翰·格鲁伯(John Gruber)。 它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者HTML)文档。
全栈工程师修炼指南
2022/09/29
2.6K0
Mermaid绘制UML图教程
本文介绍如何使用Mermaid绘制UML图。Mermaid 是一种轻量级的图形描述语言,用于绘制流程图、时序图、甘特图等各种图表。它采用简单的文本语法,使得用户能够快速绘制各种复杂图表,而无需深入学习图形绘制工具。通过简单的文本语法,用户可以绘制各种类型的图表。它适用于各种场景,包括流程图、时序图、甘特图等。使用Mermaid,你可以更轻松地表达和分享你的图形设计。
Damon小智
2024/02/16
1.3K0
Mermaid绘制UML图教程
>>运维管理:Typora工具之画图
所有的代码都要放在 mermaid代码标签中才可以生效,当前使用的typora的版本为 版本0.9.9.36.2 (4901),如果不是当前版本,删除原来版本,升级到最新版本即可,如果只是单纯升级版本,可能会有些样式问题,这里建议删除干净原来的版本,再重新下载,即可。
艾特
2023/10/10
4120
>>运维管理:Typora工具之画图
使用 markdown 画流程图、时序图
在日常工作中,难免会画一些流程图、时序图。之前都是选择使用在线的画图网站,画完然后截图插入到文档。我个人用的比较多的主要是 腾讯文档 。
Mervyn
2021/12/08
2.9K0
使用 markdown 画流程图、时序图
高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图
如果您希望直接访问Vue3导入mermaid的代码,可以直接访问:三、Vue3中如何引入mermaid
watermelo37
2025/01/22
6870
高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图
Markdown_02_作图
详细用法参见官方文档 : https://mermaidjs.github.io/
shirayner
2019/05/09
1.1K0
Markdown高级用法——mermaid
起初是写文章,其中有时序图流程图等一般是processOn或者draw.io画截图粘过去的,工作中又是腾讯文档,上面也能画图,但假如我笔记软件用语雀之类的又要把一张图反复粘贴,浪费内存,如果统一图床,又会有内外网权限问题,最终我找到了解决办法,谁说markdown只能写文档的,语法熟练以后比直接画图还快。
燃192
2024/01/17
1.3K0
Markdown高级用法——mermaid
这款Markdown神器,要收费啦!
11月23日,Typora 发布 1.0 版本,正式版开始收费了,定价14.99美元。不过,Beta版本还是可以继续免费使用的。
程序员大彬
2022/07/08
2.1K0
这款Markdown神器,要收费啦!
Mermaid:Star 74.4K,Github上的宝藏项目,你敢相信Markdown也能画出各式各样的流程图,操作太丝滑啦!
嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法
小华同学ai
2025/01/16
4150
Mermaid:Star 74.4K,Github上的宝藏项目,你敢相信Markdown也能画出各式各样的流程图,操作太丝滑啦!
类似ComfyUI和Midjourney这样的文生图图生图应用的API与服务架构该怎么设计
ComfyUI 作为开源文生图工具的代表,其 API 架构设计为我们理解此类应用提供了很好的参考模型。ComfyUI 的核心 API 架构采用了灵活的端点设计,主要包含五个关键端点:
codetrend
2025/03/02
3291
像写 Markdown 一样画流程图
今天推荐一个项目「mermaid」,一个基于 Javascript 的图表绘制工具,通过解析类 Markdown 的文本语法来实现图表的创建和动态修改。
我的小碗汤
2023/03/19
6620
像写 Markdown 一样画流程图
相关推荐
markdown绘图插件----mermaid简介
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验