Jamdesk Documentation logo

Mermaid 图表

从基于文本的 Mermaid 语法渲染流程图、时序图、时间线、饼图等。图表在构建时生成为 SVG。

以文本形式在围栏代码块中编写图表。Jamdesk 会在构建时将其渲染为 SVG。

在 Jamdesk Mermaid 编辑器中草拟并预览你的图表。 这是一个开源编辑器,在浏览器中运行,边输入边渲染。 将结果粘贴到 mermaid 围栏代码块中。

Jamdesk 还会在 d2 围栏代码块中渲染 D2 图表。 当图表需要嵌套容器、带主键和外键的 SQL 架构,或者你希望切换布局引擎时,请使用 D2。 本页的 Mermaid 示例在 D2 页面上都有对应的 D2 版本。

基本用法

使用带有 mermaid 语言标识符的围栏代码块:

```mermaid
flowchart LR
    A[Start] --> B[Process] --> C[End]
```

图表类型

流程图

方向可以是从上到下(TD)、从左到右(LR)、从下到上(BT)或从右到左(RL)。

```mermaid
flowchart TD
    A[User Request] --> B{Valid?}
    B -->|Yes| C[Process]
    B -->|No| D[Error]
    C --> E[Response]
    D --> E
```

子图

使用子图对相关节点进行分组。可以用它将大型流程图拆分为"前端"和"后端"等部分,或拆分为流水线阶段。

```mermaid
flowchart TB
    subgraph Frontend
        A[React App] --> B[Components]
    end
    subgraph Backend
        C[API Server] --> D[(Database)]
    end
    B -->|HTTP| C
```

时序图

时序图展示组件之间随时间的交互过程。用它来描述 API 调用流程和身份验证握手。参与者显示为垂直生命线,消息在它们之间传递。

```mermaid
sequenceDiagram
    participant Client
    participant Server
    participant Database

    Client->>Server: Request
    Server->>Database: Query
    Database-->>Server: Results
    Server-->>Client: Response
```

类图

类图展示面向对象系统的结构,例如数据模型或服务的核心类型。它展示类及其属性、方法和关系。

```mermaid
classDiagram
    class User {
        +String name
        +String email
        +login()
        +logout()
    }
    class Order {
        +int id
        +Date created
        +addItem()
        +checkout()
    }
    class Item {
        +String name
        +float price
    }
    User "1" --> "*" Order : places
    Order "1" --> "*" Item : contains
```

状态图

状态图描述对象或流程的生命周期。它展示每个状态以及状态之间的转换。订单状态和文档审批流程是典型示例。

```mermaid
stateDiagram-v2
    [*] --> Draft
    Draft --> Review
    Review --> Published
    Review --> Draft
    Published --> [*]
```

实体关系图

ER 图用于记录数据库架构和数据模型。它展示实体(表)、其属性(列)以及它们之间的关系。符号标注基数:一对一、一对多或多对多。

```mermaid
erDiagram
    USER ||--o{ ORDER : places
    ORDER ||--|{ ITEM : contains
    USER {
        string name
        string email
    }
    ORDER {
        int id
        date created
    }
```

甘特图

甘特图展示项目进度。任务显示为时间线上的水平条,包含持续时间、依赖关系和并行工作。可用于项目计划或路线图。

```mermaid
gantt
    title Project Timeline
    dateFormat YYYY-MM-DD
    section Planning
        Research       :a1, 2024-01-01, 7d
        Design         :a2, after a1, 5d
    section Development
        Backend        :b1, after a2, 14d
        Frontend       :b2, after a2, 14d
    section Launch
        Testing        :c1, after b1, 7d
        Deployment     :c2, after c1, 2d
```

Git 图

Git 图展示分支策略和版本控制工作流:提交、分支、合并和仓库历史。每个分支有各自的颜色。

```mermaid
gitGraph
    commit id: "Initial"
    branch feature
    checkout feature
    commit id: "Add login"
    commit id: "Add auth"
    checkout main
    merge feature id: "v1.0"
    branch release
    checkout release
    commit id: "Prep 1.1"
    checkout main
    branch hotfix
    checkout hotfix
    commit id: "Fix bug"
    checkout main
    merge hotfix id: "v1.0.1"
    checkout release
    commit id: "Final QA"
    checkout main
    merge release id: "v1.1"
```

时间线图

时间线展示跨时段的事件。以 timeline 关键字开头,可选 title,然后每个时段一行,事件之间用冒号分隔:

```mermaid
timeline
    title Product Launch Timeline
    2024 : Research
         : First prototype
    2025 : Private beta
         : Public beta
    2026 : GA launch
```

饼图

饼图以圆形切片展示比例。当各部分组成一个整体时使用,例如市场份额或调查结果。切片建议不超过 6 个。

```mermaid
pie title Browser Market Share
    "Chrome" : 65
    "Safari" : 19
    "Firefox" : 10
    "Edge" : 4
    "Other" : 2
```

流程图形状

每种形状在流程图中都有约定的含义:

语法形状用途
[text]矩形处理步骤、操作
(text)圆角矩形起点/终点
{text}菱形决策、条件
([text])体育场形事件、触发器
[[text]]子程序预定义流程
[(text)]圆柱体数据库、存储

箭头类型

箭头表示流向和关系类型:

语法描述用途
-->实线箭头常规流程
---实线关联关系
-.->虚线箭头可选或异步流程
==>粗箭头重要路径
--text-->带标签箭头描述转换

调整宽图表的尺寸

使用带 minWidth 属性的 Mermaid 组件,防止宽图表(例如甘特图或大型 Git 图)被压缩:

<Mermaid minWidth="700px">
gantt
    title Wide Project Timeline
    ...
</Mermaid>

点击展开

在宽度为 768px 及以上的屏幕上,点击图表即可全屏打开。使用键盘时,聚焦图表后按 Enter。按 Escape、点击关闭按钮或点击图表外部即可关闭。

使用组件形式和 noZoom 可关闭单个图表的此功能:

<Mermaid data-no-zoom="true">
graph LR
    A[Request] --> B[Response]
</Mermaid>

以 ```mermaid 代码围栏编写的图表始终全屏打开。

样式提示

Mermaid 图表会随站点切换深色模式。

  • 将大型流程拆分为较小的图表。
  • 为箭头添加标签以说明转换。
  • 选择一个方向:TD(从上到下)适用于高图表,LR(从左到右)适用于宽图表。
  • 每个图表的节点数控制在 10-15 个以内。

要为节点上色,可对单个节点使用 style,对一组节点使用 classDef:

Jamdesk 会在深色模式下保留你的颜色。如果填充色未指定文字颜色,Jamdesk 会为标签挑选一种与填充色相配、便于阅读的颜色。

了解更多

完整语法(包括样式、主题和更多图表类型)请参阅 Mermaid 官方文档。

接下来

D2 图表

使用 D2 绘制架构、容器和 SQL 架构

组件概览

浏览所有可用组件

MDX 基础

了解如何在 MDX 中使用组件