其他
需要创建或更新可版本控制的软件图时,用 Mermaid…
当需要把领域模型、API/用户流程、数据库模式、系统架构、状态机、分支策略或项目排期可视化,并让图随代码维护时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 48/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 55/100 ×0.15
适用场景
需要创建或更新可版本控制的软件图时,用 通用
解决思路
- 用 Mermaid 文本语法创建专业软件图:首行写 diagramType,下一行写 definition content。
- 第一行声明图类型,例如 classDiagram、sequenceDiagram、flowchart。
- 用 %% 添加注释。
- 用换行和缩进提高可读性,但它们不是必需的。
- 避免未知单词,因为未知单词会破坏图;参数错误会静默失败。
- 按目标选择图类型:类图用于领域建模、OOP 设计、实体关系。
- 类图适用:领域驱动设计文档、面向对象类结构、实体关系与依赖。
- 序列图用于时序交互和消息流:API 请求/响应流、用户认证流、系统组件交互、方法调用序列。
- 流程图用于过程、算法、决策树:用户旅程和工作流、业务流程、算法逻辑、部署流水线。
- ERD 用于数据库模式:表关系、数据建模、模式设计。
- C4 图用于多级软件架构:System Context、Container、Component、Code(类/接口级)。
- 状态图用于状态机和生命周期状态。
- Git 图用于版本控制分支策略。
- 甘特图用于项目时间线和排期。
- 饼图/条形图用于数据可视化。
- 类图快速开始:用 classDiagram 定义类、属性/方法、关系,如 Title -- Genre、Title *-- Season、User --> Review : creates。
- 序列图快速开始:用 sequenceDiagram 定义 participant 和消息,如 User->>API、API->>Database、Database-->>API,并用 alt/else 表示分支。
- 流程图快速开始:用 flowchart TD 定义节点、决策和带标签连线,如 Start([User visits site]) --> Auth{Authenticated?}、Auth -->|No| Login。
- ERD 快速开始:用 erDiagram 定义实体、关系基数和键,如 USER ||--o{ ORDER : places、int id PK、string email UK。
- 针对类图深入参考 references/class-diagrams.md:领域建模、关系(关联、组合、聚合、继承)、多重性、方法/属性。
- 针对序列图深入参考 references/sequence-diagrams.md:角色、参与者、消息(同步/异步)、激活、循环、alt/opt/par 块、注释。
- 针对流程图深入参考 references/flowcharts.md:节点形状、连接、决策逻辑、子图、样式。
- 针对 ERD 深入参考 references/erd-diagrams.md:实体、关系、基数、键、属性。
- 针对 C4 图深入参考 references/c4-diagrams.md:System Context、Container、Component 图、边界。
- 针对架构图深入参考 references/architecture-diagrams.md:云服务、基础设施、CI/CD 部署。
- 针对高级功能深入参考 references/advanced-features.md:主题、样式、配置、布局选项。
- 从简单开始:先画核心实体/组件,再逐步添加细节。
- 使用有意义的名称:清晰标签让图自文档化。
- 大量注释:用 %% 解释复杂关系。
- 保持聚焦:每个概念一张图;将大图拆成多个聚焦视图。
- 版本控制:将 .mmd 文件与代码一起存储,便于更新。
- 添加上下文:包含标题和注释解释图的目的。
- 迭代:随着理解演变精炼图。
- 用 frontmatter 配置图,例如 config、theme、themeVariables、primaryColor: "#ff6b6b"。
- 可用主题:default、forest、dark、neutral、base。
- 布局选项:layout: dagre(默认)用于经典平衡布局;layout: elk 用于复杂图的高级布局(需要集成)。
- 外观选项:look: classic 传统 Mermaid 风格;look: handDrawn 手绘外观。
- 利用原生渲染支持:GitHub/GitLab 在 Markdown 自动渲染;VS Code 配合 Markdown Mermaid 扩展;Notion、Obsidian、Confluence 内置支持。
- 用 Mermaid Live Editor 在线编辑并导出 PNG/SVG。
- 用 Mermaid CLI 导出:npm install -g @mermaid-js/mermaid-cli,然后 mmdc -i input.mmd -o output.png。
- 用 Docker 导出:docker run --rm -v $(pwd):/data minlag/mermaid-cli -i /data/input.mmd -o /data/output.png。
- 避免注释中的 {} 等破坏字符;对特殊字符使用正确转义。
- 验证语法:拼写错误会破坏图;在 Mermaid Live 中验证语法。
- 拆分过度复杂的图,避免单图过于复杂。
- 记录实体之间所有重要连接,避免缺少关系。
适用边界 · 注意事项
- 不要在注释中使用 {} 等破坏字符;特殊字符需正确转义。
- 不要使用未知单词或错误拼写;未知单词会破坏图,参数错误会静默失败,应在 Mermaid Live 验证语法。
- 不要在一张图中塞入过多概念;过度复杂时应拆成多个聚焦视图。