Mermaid 实用教程

Mermaid 实用教程

Mermaid 是一个用于画流程图、状态图、时序图、甘特图的库,使用 JS 进行本地渲染,广泛集成于许多 Markdown 编辑器中。

之前用过 PlantUML,但是发现这个东西的实现原理是生成 UML 的图片后上传服务端,每次再从服务端读取,因此觉得不够鲁棒,隐私性也不好,因而弃用。

Mermaid 作为一个使用 JS 渲染的库,生成的不是一个“图片”,而是一段 HTML 代码,因此安全许多。

官网:https://mermaidjs.github.io/
Github 项目地址:https://github.com/knsv/mermaid

接下来介绍 Mermaid 的流程图及序列图的语法,也就是大家在工作中常使用的图表。

流程图

图表方向

Mermaid 支持多种图表的方向,语法如下:

graph 方向描述
    图表中的其他语句...

其中“方向描述”为

用词含义
TB从上到下
BT从下到上
RL从右到左
LR从左到右

节点定义

即流程图中每个文本块,包括开始、结束、处理、判断等。Mermaid 中每个节点都有一个 id,以及节点的文字。

表述说明
id[文字]矩形节点
id(文字)圆角矩形节点
id((文字))圆形节点
id>文字]右向旗帜状节点
id{文字}菱形节点

需要注意的是,如果节点的文字中包含标点符号,需要时用双引号包裹起来。
另外如果希望在文字中使用换行,请使用
替换换行

节点间的连线

表述说明
>添加尾部箭头
-不添加尾部箭头
--单线
--text--单线上加文字
==粗线
==text==粗线加文字
-.-虚线
-.text.-虚线加文字

子图表

使用以下语法添加子图表

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

对 fontawesome 的支持

使用 fa: #图表名称# 的语法添加 fontawesome。

举个例子

这里写图片描述

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

序列图

使用以下语法开始序列图

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

例如

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

参与者

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

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

举个例子

这里写图片描述

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
Mermaid 是一种基于文本的图表生成工具,它允许用户通过编写类似于 Markdown 的语法来创建流程图、时序图、甘特图等多种类型的图表。其设计目的是为了帮助开发者和文档编写者更高效地创建和维护文档中的图表内容,同时确保文档与代码同步更新,避免文档过时的问题[^3]。 ### 安装教程 Mermaid 可以通过多种方式进行安装和使用。最常见的方式是将其集成到支持 Markdown 的编辑器或文档系统中,例如 Typora、VS Code 插件、Jupyter Notebook、Docusaurus、GitBook 等。对于网页项目,可以通过 npm 安装 Mermaid 的 JavaScript 库: ```bash npm install mermaid ``` 在 HTML 页面中引入 Mermaid 并启用自动渲染功能,代码如下: ```html <script type="module"> import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs'; mermaid.initialize({ startOnLoad: true }); </script> ``` 如果使用 Markdown 编辑器,只需在代码块中以 `mermaid` 作为语言标识即可直接渲染图表[^2]。 ### 使用指南 Mermaid 的语法简洁直观,用户只需掌握基本的结构即可快速创建图表。例如,以下是一个简单的流程图示例: ```mermaid graph TD A[开始] --> B[输入用户名] B --> C{用户存在?} C -->|是| D[登录成功] C -->|否| E[提示错误] ``` 时序图的定义方式如下: ```mermaid sequenceDiagram 用户->>系统: 输入用户名 系统->>数据库: 查询用户 数据库-->>系统: 返回结果 系统-->>用户: 显示登录状态 ``` 甘特图的定义如下: ```mermaid gantt title 项目进度 开始 :a1, 2024-01-01, 30d 需求分析 :a2, after a1, 10d 设计阶段 :a3, after a2, 15d 开发阶段 :a4, after a3, 30d ``` ### 功能特点 Mermaid 提供了多种图表类型,包括但不限于流程图(Flowchart)、时序图(Sequence Diagram)、甘特图(Gantt)、类图(Class Diagram)、状态图(State Diagram)、实体关系图(ER Diagram)等。这些图表类型支持丰富的配置选项,如节点样式、箭头类型、颜色设置等,允许用户根据需要自定义图表外观。此外,Mermaid 支持响应式布局,图表可以根据容器大小自动调整[^1]。 Mermaid 还具备良好的可扩展性,开发者可以通过插件机制添加新的图表类型或修改现有图表的行为。它与主流开发工具和文档系统集成良好,提升了团队协作效率,尤其适合用于技术文档、API 设计、架构说明等场景[^2]。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值