技术文档绘图指南:不同场景下如何精准选择图表类型?
一、 核心设计原则:一图一界,读者至上
| 原则 | 核心内涵 | 反例警示 |
|---|---|---|
| 视角分层 | 按读者角色划分:集成方看边界/约定 → 研发看实现/状态 → 维护者看结构/数据 | 对外集成手册出现 Worker线程/IndexedDB |
| 单一职责 | 一张图只讲清一种流:控制流 / 交互流 / 状态流 / 结构流 / 数据流 | 时序图里画 if/else 判断,类图里画循环逻辑 |
| 读者导向 | 图表元素必须与读者关注点对齐,无关实现细节不出现 | 核心开发者看到 用户点击按钮 等 UI 描述 |
| 工具适配 | 文档内联优先 Mermaid,复杂排版/对外交付改用 Draw.io/Lucidchart/Structurizr | 用 Mermaid 画精细 UML 类图或拓扑网络 |
💡 图表不是代码的翻译,而是架构思考的切片。不要试图用一张图解释系统全貌。
二、 场景-图表匹配矩阵(核心速查表)
| 你关心的问题 | 推荐主图 | 辅助图 | Mermaid 关键字 |
|---|---|---|---|
| 模块怎么拆?谁依赖谁? | 组件图 / 类图 | 系统架构图 | classDiagram / flowchart+subgraph |
| 宿主 vs 编辑器,谁负责什么? | 泳道图 / 职责边界图 | RACI 矩阵 | flowchart+subgraph 分列 |
| 接口怎么调?何时回调?生命周期如何? | 时序图 | 状态机图 | sequenceDiagram |
| 初始化/保存/切换文档的步骤? | 流程图 | 用户旅程图 | flowchart |
| 内部算法/控制逻辑/分支并行? | 活动图(流程图模拟) | 时序图 | flowchart + alt/opt/loop |
| 数据从哪来?怎么变?存哪去? | 数据流图(DFD) | 类图(结构) | flowchart(模拟) |
| 何时能操作?状态如何跃迁?清理时机? | 状态机图 | 时序图(触发) | stateDiagram-v2 |
| 产品在生态中的位置?集成依赖? | 应用架构图 | 数据流图 | flowchart 分层 |
📌 速查技巧:先问自己“读者想知道执行顺序、调用时机、状态约束,还是数据形态?”答案即图表类型。
三、 3大类图表详解
1. 架构与结构图(静态视角)
| 类型 | 核心定位 | 适用场景 | 绘制要点 | Mermaid 实现 |
|---|---|---|---|---|
| 应用架构图 | 业务/产品视角,跨系统边界 | 对外集成方案、生态合作、能力清单 | 不画代码实现,只标能力模块、外部依赖、集成协议 | flowchart TD + subgraph 分层,节点用 [] 标能力名 |
| 系统架构图 | 技术实现视角,单系统运行时 | 技术方案评审、部署运维、性能安全 | 分层标注(表现/内核/存储/基础设施),注明协议与资源隔离 | flowchart 分层 + classDef 标注技术栈 |
| 组件图 | 代码/模块视角,静态依赖 | 插件开发、模块重构、依赖冲突排查 | 精确到包名/接口/版本约束,标注提供(<<provided>>)与依赖(<<requires>>) |
classDiagram 或 flowchart + 节点标签 ` |
2. 交互与控制流图(动态视角)
| 类型 | 核心定位 | 适用场景 | 绘制要点 | Mermaid 实现 |
|---|---|---|---|---|
| 时序图 | 调用顺序与契约 | 接口对接、生命周期事件、回调时机 | 标同步(->)与异步(-->),用 alt/opt 标条件交互,注明消息格式/超时 |
sequenceDiagram + Note + autonumber |
| 流程图 | 步骤顺序与分支 | 初始化/保存/切换文档操作指南 | 明确决策点 {},标注条件守卫,避免业务逻辑溢出 |
flowchart TD/LR + alt/opt/loop 原生支持 |
| 活动图 | 控制逻辑与并行 | 内部机制、算法流程、降级策略 | 用 subgraph 模拟泳道,fork/join 用并行路径表示,标注线程/协程边界 |
flowchart + subgraph + Note over |
3. 状态与数据流图(演进视角)
| 类型 | 核心定位 | 适用场景 | 绘制要点 | Mermaid 实现 |
|---|---|---|---|---|
| 状态机图 | 状态跃迁与约束 | 编辑器生命周期、协同冲突、离线队列 | 标事件触发、守卫条件 guard:、进出动作 entry:/exit:,必须含终态 [Terminated] |
stateDiagram-v2 + note |
| 数据流图(DFD) | 数据形态演进 | 文档解析/序列化/差分压缩/缓存策略 | 标注 Data: {type, format, size},加工节点用 [] 或 (),存储用 [[DB]] |
flowchart 模拟,箭头标签写数据契约 |
💡 互补关系:状态机图不表现数据转换;DFD 不表现控制分支。两者配合可完整描述“何时触发数据流水线”。
四、技术文档的组织架构建议
不要将图表散落在各处。建议按读者视角分层组织文档结构:
以编辑器和宿主环境集成设计为例:
# 编辑器-宿主集成与实现设计
## 卷1:集成与使用指南(面向宿主开发者)
- 应用架构图(能力边界/外部依赖)
- 初始化/保存/切换文档流程图
- 核心交互时序图(生命周期/回调契约)
- 状态机图(合法性约束/清理时机)
## 卷2:架构与实现设计(面向核心研发)
- 系统架构图(运行时分层/协议/资源隔离)
- 组件图 / 类图(模块依赖/接口契约)
- 内部机制图(控制流/活动图/并行策略)
- 数据流图(序列化/压缩/缓存策略)
## 卷3:协议与契约(面向插件/生态)
- 接口签名表 + 时序图(调用顺序)
- 状态机图(插件生命周期/热更新)
- 数据格式规范(Payload Schema/版本兼容)
结语
优秀的技术图表不是“画出来的”,而是 “想清楚之后自然浮现的” 。选型的核心不在于工具的炫酷程度,而在于是否精准匹配了读者在特定场景下的认知需求。
实践建议:
- 用 flowchart 拆分控制流,用 sequenceDiagram 收敛交互契约,用 stateDiagram-v2 明确状态边界

浙公网安备 33010602011771号