WARNING

本文主要内容由 AI 生成,如有介意请不要观看此页面。

Mermaid 是一种基于 Markdown 的图表绘制工具,它允许你使用简单的文本代码生成流程图、时序图、甘特图等。对于开发者和文档撰写者来说,它是实现“文档即代码”(Documentation as Code)的神器。

基础语法结构

Mermaid 的代码块通常包裹在 Markdown 的代码围栏中:

graph LR
     这是一个注释
    A[开始] --> B[结束]

常用方向标识:

  • TB / TD: 从上到下 (Top to Bottom / Top Down)
  • BT: 从下到上 (Bottom to Top)
  • LR: 从左到右 (Left to Right)
  • RL: 从右到左 (Right to Left)

核心图表类型

流程图

graph LR
    A[矩形] --> B(圆角矩形)
    B --> C{决策判断}
    C -- 是 --> D((圆形))
    C -- 否 --> E>旗帜形]
graph LR
    A[矩形] --> B(圆角矩形)
    B --> C{决策判断}
    C -- 是 --> D((圆形))
    C -- 否 --> E>旗帜形]
  • 节点形状[] 矩形,() 圆角,{} 菱形,(()) 圆形。
  • 连线--> 实线箭头,--- 实线无箭头,-.-> 虚线箭头, 加粗箭头。

时序图

用于描述对象之间的交互顺序。

sequenceDiagram
    participant 客户端
    participant 服务器
    客户端->>服务器: 发起 GET 请求
    服务器-->>客户端: 返回 200 OK
    Note right of 服务器: 服务器处理逻辑
sequenceDiagram
    participant 客户端
    participant 服务器
    客户端->>服务器: 发起 GET 请求
    服务器-->>客户端: 返回 200 OK
    Note right of 服务器: 服务器处理逻辑

甘特图

gantt
    title 项目开发计划
    dateFormat  YYYY-MM-DD
    section 设计阶段
    需求分析 :a1, 2023-10-01, 5d
    原型设计 :after a1, 7d
    section 开发阶段
    后端开发 :2023-10-12, 10d
    前端开发 :2023-10-12, 10d
gantt
    title 项目开发计划
    dateFormat  YYYY-MM-DD
    section 设计阶段
    需求分析 :a1, 2023-10-01, 5d
    原型设计 :after a1, 7d
    section 开发阶段
    后端开发 :2023-10-12, 10d
    前端开发 :2023-10-12, 10d

进阶样式

箭头上写字

可以用这两种办法给箭头写字

graph LR
    A -- 成功 --> B
    C -->|失败| D
graph LR
    A -- 成功 --> B
    C -->|失败| D

一次连接多个节点

graph LR
    A --> B & C --> D
graph LR
    A --> B & C --> D

节点样式定制

你可以通过 style 关键字为特定节点着色:

graph LR
    Start --> Stop
    style Start fill:#f9f,stroke:#333,stroke-width:4px
    style Stop fill:#bbf,stroke:#f66,stroke-dasharray: 5 5
graph LR
    Start --> Stop
    style Start fill:#f9f,stroke:#333,stroke-width:4px
    style Stop fill:#bbf,stroke:#f66,stroke-dasharray: 5 5

子图 (Subgraphs)

将相关的节点组织在一起:

graph TB
    subgraph 外部系统
        A[用户界面]
    end
    subgraph 核心服务
        B[API层] --> C[数据库]
    end
    A --> B
graph LR
    subgraph 外部系统
        A[用户界面]
    end
    subgraph 核心服务
        B[API层] --> C[数据库]
    end
    A --> B