为什么程序员应该“写”图而不是“画”图?

在日常的技术文档编写、需求分析或架构设计中,画图是必不可少的环节。但你是否遇到过以下让人抓狂的场景:

  1. 版本管理噩梦:需求变了,你需要修改流程图。如果你用的是图片(png/jpg),只能重新画一张;如果是二进制文件(visio/pptx),Git 根本无法对比差异。
  2. 排版强迫症:用鼠标拖拽连线,为了把线条对齐、把框框摆正,浪费了半小时,结果逻辑还没理顺。
  3. 环境壁垒:发给同事的源文件,他电脑上没装对应的软件,打不开。

如果你深受其害,那么 Mermaid 就是你的救星。

Mermaid 是一种基于 JavaScript 的图表绘制工具,它允许你用类似 Markdown 的简单文本语法来生成图表。“Diagrams as Code”(像写代码一样画图),这才是技术人该有的画图姿势。


一、Mermaid 能画什么?

Mermaid 的强大在于覆盖面极广,它支持:

  • 流程图 (Flowchart):最常用,理清业务逻辑。
  • 时序图 (Sequence Diagram):交互设计、API 调用链必备。
  • 类图 (Class Diagram):面向对象设计。
  • 状态图 (State Diagram):复杂状态机流转。
  • 甘特图 (Gantt):项目排期。
  • 甚至支持 ER图用户旅程图 等。

下面我们通过几个核心场景,带你快速上手。


二、核心语法实战

1. 流程图:从此告别连线对不齐

这是最基础的图表。你只需要定义节点和方向。

代码示例:

graph TD
    A[开始] --> B{是否已登录?}
    B -- 是 --> C[进入首页]
    B -- 否 --> D[跳转登录页]
    D --> E[执行登录操作]
    E --> B
  • graph TD:代表 Top-Down(从上到下)。
  • -->:代表带箭头的连线。
  • {}[]:决定了形状是菱形还是矩形。

渲染结果:

开始

是否已登录?

进入首页

跳转登录页

执行登录操作

2. 时序图:理清复杂的交互

在分析微服务调用或前后端交互时,时序图是神器。

代码示例:

sequenceDiagram
    participant U as 用户
    participant C as 客户端
    participant S as 服务端
    
    U->>C: 点击查询按钮
    C->>S: 发送 API 请求 (GET /data)
    Note right of S: 服务端处理数据<br/>(查询数据库)
    S-->>C: 返回 JSON 数据
    C-->>U: 渲染页面展示
  • participant:定义参与者。
  • ->>:实线箭头(请求)。
  • -->>:虚线箭头(响应)。
  • Note:添加备注。

渲染结果:

服务端 客户端 用户 服务端 客户端 用户 服务端处理数据 (查询数据库) 点击查询按钮 发送 API 请求 (GET /data) 返回 JSON 数据 渲染页面展示
3. 甘特图:项目进度的上帝视角

不用打开 Project,一段文本搞定排期。

代码示例:

gantt
    title 2024年Q1 开发计划
    dateFormat  YYYY-MM-DD
    section 需求阶段
    需求评审       :a1, 2024-01-01, 5d
    section 开发阶段
    后端接口开发   :after a1  , 10d
    前端页面联调   : 6d

渲染结果:

2024-01-01 2024-01-03 2024-01-05 2024-01-07 2024-01-09 2024-01-11 2024-01-13 2024-01-15 2024-01-17 2024-01-19 2024-01-21 需求评审 后端接口开发 前端页面联调 需求阶段 开发阶段 2024年Q1 开发计划

三、工欲善其事:如何高效编写与预览?

掌握了语法,我们需要一个顺手的环境来编写和预览。虽然现在的 Notion、Obsidian 甚至 Github 都原生支持 Mermaid,但在实际开发中有两个常见的痛点:

  1. VS Code 插件太重:有时我只是想快速画个逻辑图发给同事,或者测试一段代码对不对,不想打开庞大的 IDE。
  2. 实时性要求:很多文档工具的渲染有延迟,不适合“边写边看”的调试过程。
推荐方案:轻量级在线编辑器

对于不仅限于本地开发,或者需要快速生成 SVG/PNG 图片分享的场景,使用在线编辑器是效率最高的选择。

目前市面上有不少工具,这里推荐一个我最近常用的 Mermaid Editor,它的特点是界面非常干净,支持实时渲染,而且没有广告干扰。

为什么推荐用这个?

  • 左侧写码,右侧即时出图:所见即所得,对于新手学习语法非常友好,错了立刻能看到报错。
  • 一键导出:写完后可以直接保存为 SVG(矢量图,放大不模糊)或 PNG,直接插入到你的 Word 或 PPT 里。
  • 无需安装:浏览器打开即用,特别适合临时需要画图救急的场景。

建议大家可以把这个链接收藏到书签里,下次需要画图时,直接复制上面的示例代码进去改一改,两分钟就能搞定一张专业的流程图。
在这里插入图片描述


四、进阶技巧:让你的图更专业

1. 样式自定义 (Styling)

Mermaid 允许你修改节点的颜色和样式,让图表符合公司的主题色。

graph LR
    A[正常节点] --> B(关注节点)
    style B fill:#f9f,stroke:#333,stroke-width:4px

渲染结果:

正常节点

关注节点

2. 子图 (Subgraphs)

在复杂的架构图中,利用子图可以区分不同的业务域。

graph TB
    c1-->a2
    subgraph 核心服务
    a1-->a2
    end
    subgraph 外部接口
    b1-->b2
    end

渲染结果:

核心服务

外部接口

b1

b2

c1

a2

a1

结语

作为技术人员,我们应该尽可能将工作内容“代码化”。Mermaid 不仅统一了画图的标准,更重要的是它让图表纳入了 Git 版本控制

下次产品经理再改需求,你只需要打开 Mermaid编辑器 或 IDE,修改几行文本,一张崭新的流程图就生成了。

把时间花在思考逻辑上,而不是调整线条的位置上。 这就是 Mermaid 带给我们的最大价值。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐