乐于分享
好东西不私藏

AI也能画图-认识 Mermaid:让文档自己画图的

AI也能画图-认识 Mermaid:让文档自己画图的

01 认识 Mermaid:让文档自己画图的「文本即图形」引擎

在软件需求、技术方案、会议纪要里,流程图、时序图几乎是标配。传统做法需要打开 Visio、draw.io 或 PowerPoint 手动拖拽,不仅耗时,而且版本管理困难、协作成本高。
Mermaid 把“画图”这件事变成了“写文档”——只要在 Markdown 里写几行类 Markdown 的文本,就能自动渲染出可交互、可搜索、可版本控制的矢量图。它的意义可以概括为:

  • 低心智负担:纯文本,无 UI 操作;
  • 可版本化:图就是代码,diff 清晰可见;
  • 自动化:结合 CI/CD 可以在文档、Wiki、Slide 中自动生成最新图;
  • 生态成熟:GitHub、GitLab、Notion、Obsidian、VS Code 均已原生或插件支持。

02 Mermaid 语法总览

Mermaid 语法由“声明块 + 图类型 + 图描述”三部分构成,最简模板如下:

渲染结果:

graph TD
    A[开始] --> B{条件}
    B -->|true| C[处理]
    B -->|false| D[结束]

03 核心功能与实战示例

下面按场景拆分,逐一枚举常用功能,并给出可直接复制运行的代码。

03-1 Flowchart(流程图)

功能点

  • 方向控制(TD/LR/RL/BT)
  • 节点形状(矩形、圆角、圆形、子图、数据库)
  • 连线样式(实线、虚线、箭头、无箭头、加粗)
  • 子图(subgraph)实现嵌套布局

示例:订单状态机

渲染结果:

flowchart TD
    S([开始]) --> P[待支付] -->|支付成功| W{库存检查}
    W -->|有货| A[已发货]
    W -->|缺货| C[退款中]
    C --> E([结束])
    A --> E
    subgraph 物流子流程
        A --> T[拣货] --> D[配送]
    end
    classDef green fill:#c2e0c6,stroke:#006100
    classDef red   fill:#f2b3b3,stroke:#c5504b
    class A green
    class C red

解读

  • ([ ]) 圆形节点;{ } 菱形判断;[ ] 矩形。
  • classDef 自定义颜色,配合 class 语句批量着色。
  • subgraph 关键字创建可折叠区域,便于大型流程分层展示。

03-2 Sequence Diagram(时序图)

功能点

  • Actor / Participant 声明
  • 同步/异步消息(->-->>
  • 激活条(activatedeactivate
  • 循环(loop)、可选(opt)、并行(par)片段

示例:OAuth2 授权码流程

渲染结果:

sequenceDiagram
    participant U as 用户浏览器
    participant A as 前端 App
    participant S as 授权服务器
    participant R as 资源服务器

    U->>A: 点击登录
    A->>U: 302 重定向到 /authorize
    U->>S: 登录并同意授权
    S->>U: 302 返回 code
    U->>A: 携带 code 回前端
    A->>S: POST /token code+secret
    activate S
    S-->>A: 返回 access_token
    deactivate S

    A->>R: GET /userinfo
    activate R
    R-->>A: 返回用户信息
    deactivate R

解读

  • participant X as 别名 解决中文或长名问题。
  • activate/deactivate 生成激活条,突出耗时操作。
  • -->> 虚线箭头表示异步返回。

03-3 Gantt(甘特图)

功能点

  • 任务、里程碑、章节分组
  • 日期格式、工作日历
  • 关键路径高亮

示例:两周 Sprint 计划

渲染结果:

gantt
    title Sprint 25 甘特图(修正版 1)
    dateFormat YYYY-MM-DD
    excludes weekends

    section 需求
    需求澄清      :a1, 2025-08-18, 2d

    section 开发
    接口设计      :dev1, after a1, 1d
    前端开发      :dev2, after dev1, 3d
    后端开发      :dev3, after dev1, 3d

    section 测试
    联调          :t1, after dev2, 1d
    回归测试      :t2, after t1, 1d
    上线          :milestone, m1, after t2, 0d

解读

  • after 任务名 建立依赖,自动计算开始时间。
  • excludes weekends 排除周末,甘特条会自动跳过。
  • milestone 零耗时节点,常用于发布节点。

03-4 Class Diagram(类图)

功能点

  • 类、接口、枚举、包
  • 可见性(+ public、- private、# protected)
  • 关系:继承(<|–)、组合(*–)、聚合(o–)、关联(–>)

示例:电商核心域模型

渲染结果:

classDiagram
    class Customer {
        -String id
        -String name
        +register()
    }

    class Order {
        -String orderNo
        -BigDecimal amount
        +pay()
    }

    class Product {
        -String sku
        -int stock
        +reduceStock()
    }

    class OrderItem {
        -int quantity
    }

    Customer "1" --> "*" Order : places
    Order "1" *-- "*" OrderItem : contains
    OrderItem "*" --> "1" Product : refers

解读

  • "1" --> "*" 表示一对多关联,语义与 UML 一致。
  • *-- 实心菱形代表强聚合(整体-部分生命周期一致)。

03-5 State Diagram(状态机)

功能点

  • 状态、转移、开始/结束节点
  • 并发状态(fork/join)

示例:工单状态

渲染结果:

stateDiagram-v2
    [*] --> New
    New --> Assigned : 分派
    Assigned --> Processing : 开始处理
    Processing --> Resolved : 修复
    Resolved --> Closed : 客户确认
    Resolved --> Reopened : 未解决
    Reopened --> Processing
    Closed --> [*]

03-6 Pie Chart(饼图)

pie title 本月服务器错误分布
    "5xx" : 42
    "4xx" : 28
    "Timeout" : 15
    "Network" : 9
    "Other" : 6

03-7 Requirement Diagram(需求追踪)

需求图可追溯到测试用例,适合 MBSE(基于模型的系统工程)。

requirementDiagram
    requirement req {
        id: 1
        text: 用户登录时间 ≤ 2 秒
        risk: high
        verifymethod: test
    }
    test_case tc {
        id: TC-01
        title: 登录性能测试
    }
    req - traces -> tc

04 进阶技巧

  1. 主题与自定义样式
    Mermaid 内置 7 套主题(default、dark、forest、neutral、base、darkMode、base),也支持覆盖 CSS 变量。

    %%{init:{'theme':'dark'}}%%
  2. CLI & CI 集成
    安装 @mermaid-js/mermaid-cli,可在 GitHub Actions 中把 .mmd 文件批量转成 .svg 或 .png,并上传到文档站点。
  3. VS Code 插件
    插件 “Markdown Preview Mermaid Support” 支持实时预览,断点调试语法。
  4. PlantUML 迁移
    用 mermaid-to-plantuml 反向转换,或利用 mermaid-zenuml 输出更符合中文习惯的时序图。

05 总结

  • Mermaid 把“图”纳入源码管理,极大降低了维护成本。
  • 支持 10+ 种图类型,覆盖需求、架构、排期、运维指标等全链路场景。
  • 语法简洁,生态工具链完备,从本地 Markdown 预览到线上自动化文档,全流程无缝。
  • 对于团队写作、Code Review、技术博客,Mermaid 都是“写一次,到处渲染”的利器。

下次写文档时,不妨先敲几行 Mermaid,让图“自己长出来”。Happy diagramming!

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » AI也能画图-认识 Mermaid:让文档自己画图的

评论 抢沙发

6 + 2 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮