Mermaid绘制UML图教程

news2024/11/26 3:37:39

Mermaid 是一种轻量级的图形描述语言,用于绘制流程图、时序图、甘特图等各种图表。它采用简单的文本语法,使得用户能够快速绘制各种复杂图表,而无需深入学习图形绘制工具。


一、安装Mermaid

Mermaid 可以在浏览器中直接使用,也可以通过 Node.js 进行安装。在浏览器中使用只需要引入 Mermaid 的脚本文件:

<script type="module">
  import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
  mermaid.initialize({ startOnLoad: true });
</script>

如果选择使用 Node.js,在命令行中执行以下命令安装 Mermaid:

npm install mermaid

二、绘制流程图

使用 Mermaid 绘制流程图非常简单,只需要通过 graph 关键字来创建。

例如:

graph TD; A-->B; A-->C; B-->D; C-->D;

这是一个简单的流程图,节点 A 分别指向节点 B 和节点 C,而节点 B 和 C 同时指向节点 D。

成品图: 

举个复杂点的例子,下面绘制一张分布式系统的架构图:  

graph TD
  subgraph 用户
    用户操作 --> A[前端应用]
  end

  subgraph 服务端
    A --> B[负载均衡]
    B -->|请求| C[服务1]
    B -->|请求| D[服务2]
    B -->|请求| E[服务3]
  end

  subgraph 数据存储
    C -->|读写| F[数据库1]
    D -->|读写| G[数据库2]
    E -->|读写| H[数据库3]
  end

  subgraph 消息队列
    C -->|异步通信| I[消息队列1]
    D -->|异步通信| I
    E -->|异步通信| I
  end

成品图: 


三、绘制时序图

时序图也是 Mermaid 的一种常见应用场景,通过 sequenceDiagram 关键字来创建。

以下是一个简单的时序图的Mermaid语法示例:

sequenceDiagram
    participant Alice
    participant Bob
    Alice->>Bob: Hello Bob, how are you?
    Bob-->>Alice: Hi Alice! I'm good, thank you!

成品图: 

再举个复杂的例子,下面绘制一张嵌入式系统的架构图:  

sequenceDiagram
    participant A as 用户
    participant B as Harmony设备
    participant C as 云服务器
    participant D as 云数据库
    participant E as 嵌入式上层应用
    participant F as 开发板
    participant G as SQLite

    activate A #grey
    note over A: 用户查看操作
    A->>B: 查询事件
    deactivate A
    activate B #lightblue
    B->>C: 请求数据
    deactivate B
    activate C #orange
    C->>D: 查询
    deactivate C
    activate D #blue
    D-->>C: 返回数据
    deactivate D
    activate C #orange
    C-->>B: 返回数据
    deactivate C
    activate B #lightblue
    B-->>A: 显示内容
    deactivate B

    activate A #grey
    note over A: 用户更改操作
    A->>B: 更新事件
    deactivate A
    activate B #lightblue
    B->>C: 请求更新
    deactivate B
    activate C #orange
    C->>F: 请求更新
    deactivate C
    activate F #lightgreen
    F->>G: 请求更新
    deactivate F
    activate G #green
    G-->>F: 返回结果
    deactivate G
    activate F #lightgreen
    F->>C: 发送修改请求
    deactivate F
    activate C #orange
    C->>D: 更新数据
    deactivate C
    activate D #blue
    D-->>C: 返回结果
    deactivate D
    activate C #orange
    C-->>B: 返回结果
    deactivate C
    activate B #lightblue
    B-->>A: 返回结果
    deactivate B
    activate A #grey
    A->>A: 提示结果
    note over A: 操作成功
    deactivate A

成品图:


四、绘制甘特图

使用 Mermaid 还可以绘制甘特图,通过 gantt 关键字来创建。

举个例子,下面绘制一张简单的甘特图:  

gantt
    title 甘特图示例

    section Section
    A task           :a1, 2022-03-02, 1d
    Another task     :after a1, 1d
    section Another
    Task in sec      :2022-03-04, 1d

成品图:


五、绘制饼图

使用 Mermaid 还可以绘制饼图,通过 pie 关键字来创建。

例如:

pie
  title Pie Chart
  "Category A" : 40
  "Category B" : 25
  "Category C" : 20
  "Category D" : 15

成品图: 


六、绘制状态图

状态图用于展示对象的状态和状态间的转移过程。在mermaid中,状态图的语法也是非常简单的。状态图可以用于展示对象的生命周期、状态转移等,通过 stateDiagram 关键字来创建。

例如:

stateDiagram
[*] --> 暂停
    暂停 --> 播放
    暂停 --> 停止
    播放 --> 暂停
    播放 --> 停止
    停止 --> [*] 

成品图:


七、绘制类图

使用 Mermaid 还可以绘制类图,通过 classDiagram 关键字来创建。

例如:

classDiagram
  class User {
    +username: string
    +password: string
    +login(): void
    +logout(): void
  }

  class Employee {
    +employeeId: string
    +position: string
    +work(): void
  }

  class Customer {
    +customerId: string
    +membershipLevel: string
    +purchase(): void
  }

  User <|-- Employee
  User <|-- Customer

成品图:

=


八、导出图表

在浏览器中使用 Mermaid 绘制图表后,你可以通过右键保存为图片或将代码导出为 SVG 文件。如果使用 Node.js,在命令行中执行以下命令将 Mermaid 代码转换为图片:

npx mmdc -i input.mmd -o output.png

九、Mermaid绘图总结

Mermaid 不仅是一款简单而强大的图形描述语言,更是在文本层面实现图形可视化的理想工具。通过其简单的文本语法,用户能够轻松绘制各种类型的图表,包括流程图、时序图、甘特图等。这种轻量级而直观的设计使得 Mermaid 成为与团队成员、同行和客户分享和理解图形设计的理想选择。

Mermaid 的优势不仅在于其易用性,还体现在其广泛的应用场景上。在项目管理中,可以使用 Mermaid 绘制清晰的甘特图,直观展示任务的时间安排与进度。在系统设计中,Mermaid 提供了简单而强大的时序图绘制功能,有助于理清事件之间的关系和顺序。此外,Mermaid 还支持流程图、类图等多种图形类型,使得用户能够在不同领域应用中得心应手。

使用 Mermaid 不仅意味着更轻松地表达和分享图形设计,还提供了易于维护和更新的优势。文本化的图形描述使得团队成员能够更加方便地协作,通过简单的文本编辑即可完成图形的修改与更新,而无需繁琐的图形工具。

总体而言,Mermaid 的简便性、灵活性和可扩展性使其成为一款备受欢迎的图形绘制工具,为用户提供了在各种场景中清晰、直观地呈现信息的便捷途径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1449210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux用户常用命令——Linux命令(一)

大家好&#xff0c;从这篇文章开始我将开始进行Linux常用命令的学习&#xff0c;本专栏的每一个知识点我都会尽量在Linux系统中手操实现一遍。如果在读这篇文章的你也想熟悉Linux常用操作命令&#xff0c;我非常推荐你也搭个Linux系统进行实操学习。因为Linux常用的命令的知识点…

Python面向对象学习小记——基本概念

在Python中&#xff0c;int类型、float类型、列表类型、布尔类型等等&#xff0c;都是对象类型。

Linux日志管理服务 rsyslogd

文章目录 1. 基本介绍2. 系统常用的日志3. 日志管理服务 rsyslogd 1. 基本介绍 日志文件是重要的系统信息文件&#xff0c;其中记录了许多重要的系统事件&#xff0c;包括用户的登录信息、系统的启动信息、系统的安全信息、邮件相关信息、各种服务相关信息等。日志对于安全来说…

【MATLAB】鲸鱼算法优化混合核极限学习机(WOA-HKELM)回归预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 鲸鱼算法优化混合核极限学习机&#xff08;WOA-HKELM&#xff09;回归预测算法是一种结合鲸鱼优化算法和混合核极限学习机的混合算法。其原理主要包含以下几个步骤&#xff1a; 初始化&am…

【计算机网络】网际协议——互联网中的转发和编址

编址和转发是IP协议的重要组件 就像这个图所示&#xff0c;网络层有三个主要组件&#xff1a;IP协议&#xff0c;ICMP协议&#xff0c;路由选择协议IPV4 没有选项的时候是20字节 版本&#xff08;号&#xff09;&#xff1a;4比特&#xff1a;规定了IP协议是4还是6首部长度&am…

[python] 罗技动态链接驱动库DLL 控制 键鼠

[python] 罗技动态链接驱动库DLL 控制 键鼠 最近在玩搬砖游戏晶核, 每天有很多重复繁琐的"打卡"操作, 得知隔壁御三家游戏就有大佬做了自动收割的辅助工具,我就想模仿写一个.不过大佬们写的开源工具厉害得多,加了神经网络自动识别,实现寻路和点击功能.我目前最多就是…

Hive的相关概念——架构、数据存储、读写文件机制

目录 一、架构及组件介绍 1.1 Hive整体架构 1.2 Hive组件 1.3 Hive数据模型&#xff08;Data Model&#xff09; 1.3.1 Databases 1.3.2 Tables 1.3.3 Partitions 1.3.4 Buckets 二、Hive读写文件机制 2.1 SerDe 作用 2.2 Hive读写文件流程 2.2.1 读取文件的过程 …

【计算机是如何工作的】让你快速简单理解CPU核心工作机制,打破计算机的神秘感

计算机是如何⼯作的 &#x1f332;计算机发展史&#x1f332;冯诺依曼体系&#xff08;Von Neumann Architecture&#xff09;&#x1f332;CPU 基本⼯作流程&#x1f353;逻辑⻔&#x1f353;⻔电路(Gate Circuit)&#x1f353;算术逻辑单元 ALU&#xff08;Arithmetic & …

算法沉淀——队列+宽度优先搜索(BFS)(leetcode真题剖析)

算法沉淀——队列宽度优先搜索&#xff08;BFS&#xff09; 01.N 叉树的层序遍历02.二叉树的锯齿形层序遍历03.二叉树最大宽度04.在每个树行中找最大值 队列 宽度优先搜索算法&#xff08;Queue BFS&#xff09;是一种常用于图的遍历的算法&#xff0c;特别适用于求解最短路径…

【python学习篇1】python基本语法

目录 一、第一个python程序 二、基本语法&#xff0c;数据类型&#xff0c;字面量&#xff0c;循环语句等内容 2.1字面量 2.2注释 2.2.1单行注释 2.2.2多行注释 2.3变量 2.3.1认识变量 2.3.2查看数据类型 2.3.3数据类型转换 2.3.4字符串的三种定义方式 2.3.5字符串…

Unicode编码的魅力:跨语言交流的桥梁

title: Unicode编码的魅力&#xff1a;跨语言交流的桥梁 date: 2024/2/15 14:04:00 updated: 2024/2/15 14:04:00 tags: Unicode编码跨语言多语言支持存储开销兼容性文本处理全球化软件 引言&#xff1a; Unicode编码是一种用于表示世界上所有字符的标准编码方式。它解决了字…

【机器学习】合成少数过采样技术 (SMOTE)处理不平衡数据(附代码)

1、简介 不平衡数据集是机器学习和人工智能中普遍存在的挑战。当一个类别中的样本数量明显超过另一类别时&#xff0c;机器学习模型往往会偏向大多数类别&#xff0c;从而导致性能不佳。 合成少数过采样技术 (SMOTE) 已成为解决数据不平衡问题的强大且广泛采用的解决方案。 …

mysql5.6安装---windows版本

安装包下载 链接&#xff1a;https://pan.baidu.com/s/1L4ONMw-40HhAeWrE6kluXQ 提取码&#xff1a;977q 安装视频 1.解压完成之后将其放到你喜欢的地址当中去&#xff0c;这里我默认放在了D盘&#xff0c;这是我的根目录 2.配置环境变量 我的电脑->属性->高级->环境…

基础链表代码实现

我们以题目为切入点&#xff0c;深入了解链表代码实现。 题目&#xff08;单项链表&#xff09; 题目描述 实现一个数据结构&#xff0c;维护一张表&#xff08;最初只有一个元素 1&#xff09;。需要支持下面的操作&#xff0c;其中 x 和 y 都是 1 到 1000000 范围内的正整…

Java 基于 SpringBoot+Vue 的智慧外贸平台的研究与实现,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

vuex中mutations详解,与actions的区别

Vuex 的 Mutations 是用于改变 Vuex Store 中状态的一种方式。它是一个同步的操作&#xff0c;用于直接修改 Store 中的状态。 Mutations 有以下特点&#xff1a; 同步操作&#xff1a;Mutations 是同步的&#xff0c;这意味着它们会立即执行并修改状态。原子性&#xff1a;…

数据库从入门到精通(一)数据库基础操作

mysql数据库基础操作 cmd下启动mysql数据库操作命令数据库重要的删除操作数据库增删改查操作插入数据更新数据删除数据查询数据查询指定记录in查询满足指定范围之内的条件记录not in查询不在指定范围之内的条件记录带between and 的范围查询带like的字符匹配查询(d%以d开头,%d以…

猫头虎分享:2024年值得程序员关注的技术发展动向分析

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

Hadoop:认识MapReduce

MapReduce是一个用于处理大数据集的编程模型和算法框架。其优势在于能够处理大量的数据&#xff0c;通过并行化来加速计算过程。它适用于那些可以分解为多个独立子任务的计算密集型作业&#xff0c;如文本处理、数据分析和大规模数据集的聚合等。然而&#xff0c;MapReduce也有…

cron表达式介绍和使用

Cron表达式是一种用于配置定时任务的字符串&#xff0c;它由数字、字符和符号组成&#xff0c;用于指定任务在某个时间点或周期性地执行。其通常包含六个或七个字段&#xff0c;每个字段代表一个时间单位&#xff0c;如下表所示&#xff1a; 域必须取值范围特殊字符秒是[0, 59…