Mermaid 图表演示

Mermaid 图表演示 #

Mermaid 是一个强大的图表和流程图生成工具,支持多种图表类型。本文档展示了在Hugo文档中使用Mermaid的各种方法。

流程图 (Flowchart) #

基础流程图 #

graph TD
    A[开始] --> B{是否有数据?}
    B -->|是| C[处理数据]
    B -->|否| D[获取数据]
    C --> E[保存结果]
    D --> C
    E --> F[结束]

复杂流程图 #

graph LR
    subgraph "用户层"
        U[用户] --> UI[用户界面]
    end
    
    subgraph "应用层"
        UI --> API[API网关]
        API --> AUTH[认证服务]
        API --> BIZ[业务逻辑]
    end
    
    subgraph "数据层"
        BIZ --> DB[(数据库)]
        BIZ --> CACHE[(缓存)]
        BIZ --> MQ[消息队列]
    end
    
    subgraph "外部服务"
        API --> EXT[第三方API]
        BIZ --> FILE[文件存储]
    end

系统架构图 #

graph LR
    User[用户] --> Query{查询}
    Query -->|Prompt| Deepseek[(Deepseek<br/>大语言模型)]
    Deepseek -->|Response| LLM_response[(LLM<br/>响应)]
    
    Query --> Preprocess[预处理]
    Preprocess --> Vector[向量化]
    Vector --> Search[语义搜索]
    Search --> Context[上下文增强]
    Context --> Deepseek

序列图 (Sequence Diagram) #

用户登录流程 #

sequenceDiagram
    participant U as 用户
    participant C as 客户端
    participant S as 服务器
    participant D as 数据库
    
    U->>C: 输入用户名密码
    C->>S: 发送登录请求
    S->>D: 验证用户信息
    D-->>S: 返回用户数据
    S-->>C: 返回JWT令牌
    C-->>U: 登录成功
    
    Note over U,D: 完整的用户认证流程

API调用流程 #

sequenceDiagram
    participant Client as 客户端
    participant Gateway as API网关
    participant Auth as 认证服务
    participant Service as 业务服务
    participant DB as 数据库
    
    Client->>Gateway: 发起API请求
    Gateway->>Auth: 验证令牌
    Auth-->>Gateway: 令牌有效
    Gateway->>Service: 转发请求
    Service->>DB: 查询数据
    DB-->>Service: 返回数据
    Service-->>Gateway: 处理结果
    Gateway-->>Client: 返回响应
    
    rect rgb(240, 248, 255)
        Note over Client,DB: 标准API调用模式
    end

甘特图 (Gantt Chart) #

项目进度计划 #

gantt
    title 项目开发进度
    dateFormat  YYYY-MM-DD
    section 需求分析
    需求调研           :done,    des1, 2024-01-01,2024-01-05
    需求整理           :done,    des2, after des1, 3d
    需求评审           :done,    des3, after des2, 2d
    
    section 系统设计
    架构设计           :active,  des4, 2024-01-08, 5d
    详细设计           :         des5, after des4, 7d
    
    section 开发阶段
    前端开发           :         dev1, 2024-01-20, 15d
    后端开发           :         dev2, 2024-01-20, 20d
    数据库设计         :         dev3, 2024-01-15, 10d
    
    section 测试阶段
    单元测试           :         test1, after dev1, 5d
    集成测试           :         test2, after dev2, 7d
    系统测试           :         test3, after test2, 5d
    
    section 部署上线
    预发布环境         :         deploy1, after test3, 3d
    生产环境部署       :         deploy2, after deploy1, 2d

状态图 (State Diagram) #

订单状态流转 #

stateDiagram-v2
    [*] --> 待支付
    待支付 --> 已支付 : 支付成功
    待支付 --> 已取消 : 超时/主动取消
    
    已支付 --> 待发货 : 商家确认
    已支付 --> 已退款 : 申请退款
    
    待发货 --> 已发货 : 商家发货
    待发货 --> 已退款 : 申请退款
    
    已发货 --> 已收货 : 用户确认收货
    已发货 --> 运输中 : 物流更新
    
    运输中 --> 已收货 : 用户确认收货
    运输中 --> 已发货 : 物流异常
    
    已收货 --> 已完成 : 确认完成
    已收货 --> 售后中 : 申请售后
    
    售后中 --> 已完成 : 售后完成
    售后中 --> 已退款 : 退款成功
    
    已取消 --> [*]
    已退款 --> [*]
    已完成 --> [*]

类图 (Class Diagram) #

用户管理系统 #

classDiagram
    class User {
        -id: String
        -username: String
        -email: String
        -password: String
        -createdAt: Date
        +login(password: String): Boolean
        +updateProfile(data: Object): Boolean
        +resetPassword(): String
    }
    
    class Role {
        -id: String
        -name: String
        -permissions: Array
        +hasPermission(permission: String): Boolean
        +addPermission(permission: String): void
    }
    
    class Permission {
        -id: String
        -name: String
        -resource: String
        -action: String
    }
    
    class UserRole {
        -userId: String
        -roleId: String
        -assignedAt: Date
    }
    
    User ||--o{ UserRole : "has"
    Role ||--o{ UserRole : "assigned to"
    Role ||--o{ Permission : "contains"
    
    User : +getId()
    User : +getUsername()
    Role : +getPermissions()

实体关系图 (ER Diagram) #

博客系统数据模型 #

erDiagram
    USER {
        int id PK
        string username UK
        string email UK
        string password
        datetime created_at
        datetime updated_at
    }
    
    POST {
        int id PK
        string title
        text content
        string slug UK
        int author_id FK
        int category_id FK
        enum status
        datetime published_at
        datetime created_at
        datetime updated_at
    }
    
    CATEGORY {
        int id PK
        string name UK
        string description
        string slug UK
        datetime created_at
    }
    
    TAG {
        int id PK
        string name UK
        string color
        datetime created_at
    }
    
    POST_TAG {
        int post_id FK
        int tag_id FK
        datetime created_at
    }
    
    COMMENT {
        int id PK
        int post_id FK
        int user_id FK
        int parent_id FK
        text content
        enum status
        datetime created_at
    }
    
    USER ||--o{ POST : "writes"
    CATEGORY ||--o{ POST : "contains"
    POST }|--|| POST_TAG : "tagged with"
    TAG }|--|| POST_TAG : "tags"
    POST ||--o{ COMMENT : "has"
    USER ||--o{ COMMENT : "writes"
    COMMENT ||--o{ COMMENT : "replies to"

饼图 (Pie Chart) #

技术栈占比 #

pie title 项目技术栈分布
    "JavaScript" : 35
    "Python" : 25
    "Go" : 20
    "Java" : 15
    "其他" : 5

Git 流程图 #

开发工作流 #

gitgraph
    commit id: "Initial"
    branch develop
    checkout develop
    commit id: "Dev Setup"
    
    branch feature/login
    checkout feature/login
    commit id: "Add login page"
    commit id: "Add validation"
    
    checkout develop
    merge feature/login
    commit id: "Merge login feature"
    
    branch feature/dashboard
    checkout feature/dashboard
    commit id: "Add dashboard"
    commit id: "Add charts"
    
    checkout develop
    merge feature/dashboard
    commit id: "Merge dashboard"
    
    checkout main
    merge develop
    commit id: "Release v1.0"

时间线图 #

产品发展历程 #

timeline
    title 产品发展历程
    
    2024Q1 : 项目启动
           : 需求调研
           : 技术选型
    
    2024Q2 : MVP开发
           : 核心功能
           : 内测版本
    
    2024Q3 : 功能完善
           : 性能优化
           : 公测版本
    
    2024Q4 : 正式发布
           : 市场推广
           : 用户反馈

使用说明 #

基本语法 #

在Markdown文档中使用Mermaid图表,只需要用以下格式:

```mermaid
graph TD
    A[开始] --> B[结束]
```

支持的图表类型 #

  • flowchart/graph: 流程图
  • sequenceDiagram: 序列图
  • gantt: 甘特图
  • stateDiagram: 状态图
  • classDiagram: 类图
  • erDiagram: 实体关系图
  • pie: 饼图
  • gitgraph: Git流程图
  • timeline: 时间线图

主题适配 #

Mermaid图表会自动适配网站的明暗主题切换,在深色模式下使用深色主题,在浅色模式下使用默认主题。

最佳实践 #

  1. 保持简洁: 图表应该简洁明了,避免过于复杂
  2. 合理命名: 使用有意义的节点名称和标签
  3. 统一风格: 在同一文档中保持图表风格一致
  4. 适当注释: 为复杂图表添加必要的说明
  5. 响应式设计: 图表会自动适应容器宽度

Mermaid 图表让技术文档更加生动直观,提升阅读体验!