流程圖
Markdown 支持通過 Mermaid 語法創建各種類型的圖表和流程圖,為文檔提供可視化表達能力。
Mermaid 簡介
Mermaid 是一個基於文本的圖表生成工具,支持多種圖表類型:
- 流程圖 (Flowchart)
- 序列圖 (Sequence Diagram)
- 甘特圖 (Gantt Chart)
- 類圖 (Class Diagram)
- 狀態圖 (State Diagram)
- 餅圖 (Pie Chart)
- 用戶旅程圖 (User Journey)
- Git圖 (Git Graph)
基本語法
流程圖 (Flowchart)
markdown
```mermaid
flowchart TD
A[開始] --> B{是否登錄?}
B -->|是| C[顯示主頁]
B -->|否| D[顯示登錄頁]
C --> E[結束]
D --> F[用戶登錄]
F --> G{登錄成功?}
G -->|是| C
G -->|否| H[顯示錯誤信息]
H --> D
**渲染效果**:
```mermaid
flowchart TD
A[開始] --> B{是否登錄?}
B -->|是| C[顯示主頁]
B -->|否| D[顯示登錄頁]
C --> E[結束]
D --> F[用戶登錄]
F --> G{登錄成功?}
G -->|是| C
G -->|否| H[顯示錯誤信息]
H --> D
序列圖 (Sequence Diagram)
markdown
```mermaid
sequenceDiagram
participant 用戶
participant 前端
participant 後端
participant 數據庫
用戶->>前端: 登錄請求
前端->>後端: 驗證用戶信息
後端->>數據庫: 查詢用戶數據
數據庫-->>後端: 返回用戶信息
後端-->>前端: 驗證結果
前端-->>用戶: 登錄響應
**渲染效果**:
```mermaid
sequenceDiagram
participant 用戶
participant 前端
participant 後端
participant 數據庫
用戶->>前端: 登錄請求
前端->>後端: 驗證用戶信息
後端->>數據庫: 查詢用戶數據
數據庫-->>後端: 返回用戶信息
後端-->>前端: 驗證結果
前端-->>用戶: 登錄響應
流程圖詳解
節點類型
markdown
```mermaid
flowchart LR
A[方形節點]
B(圓角節點)
C((圓形節點))
D{菱形節點}
E[[子程序]]
F[(數據庫)]
G>標簽節點]
**渲染效果**:
```mermaid
flowchart LR
A[方形節點]
B(圓角節點)
C((圓形節點))
D{菱形節點}
E[[子程序]]
F[(數據庫)]
G>標簽節點]
連接線類型
markdown
```mermaid
flowchart TD
A --> B
C --- D
E -.-> F
G ==> H
I --o J
K --x L
**渲染效果**:
```mermaid
flowchart TD
A --> B
C --- D
E -.-> F
G ==> H
I --o J
K --x L
方向控制
markdown
<!-- 從上到下 -->
```mermaid
flowchart TD
A --> B
mermaid
flowchart BT
A --> B
mermaid
flowchart LR
A --> B
mermaid
flowchart RL
A --> B
### 復雜流程圖示例
```markdown
```mermaid
flowchart TD
Start([項目開始]) --> Analysis[需求分析]
Analysis --> Design[系統設計]
Design --> Dev{開發階段}
Dev --> Frontend[前端開發]
Dev --> Backend[後端開發]
Dev --> Database[數據庫設計]
Frontend --> FrontTest[前端測試]
Backend --> BackTest[後端測試]
Database --> DataTest[數據測試]
FrontTest --> Integration[集成測試]
BackTest --> Integration
DataTest --> Integration
Integration --> Deploy{部署准備}
Deploy -->|通過| Production[生產環境]
Deploy -->|失敗| Bug[修復問題]
Bug --> Integration
Production --> Monitor[監控運維]
Monitor --> End([項目完成])
style Start fill:#e1f5fe
style End fill:#e8f5e8
style Bug fill:#ffebee
**渲染效果**:
```mermaid
flowchart TD
Start([項目開始]) --> Analysis[需求分析]
Analysis --> Design[系統設計]
Design --> Dev{開發階段}
Dev --> Frontend[前端開發]
Dev --> Backend[後端開發]
Dev --> Database[數據庫設計]
Frontend --> FrontTest[前端測試]
Backend --> BackTest[後端測試]
Database --> DataTest[數據測試]
FrontTest --> Integration[集成測試]
BackTest --> Integration
DataTest --> Integration
Integration --> Deploy{部署准備}
Deploy -->|通過| Production[生產環境]
Deploy -->|失敗| Bug[修復問題]
Bug --> Integration
Production --> Monitor[監控運維]
Monitor --> End([項目完成])
style Start fill:#e1f5fe
style End fill:#e8f5e8
style Bug fill:#ffebee
序列圖詳解
基本語法
markdown
```mermaid
sequenceDiagram
Alice->>Bob: 你好Bob,你好嗎?
Bob-->>Alice: 很好,謝謝!
Alice-)Bob: 再見!
**渲染效果**:
```mermaid
sequenceDiagram
Alice->>Bob: 你好Bob,你好嗎?
Bob-->>Alice: 很好,謝謝!
Alice-)Bob: 再見!
激活框和生命線
markdown
```mermaid
sequenceDiagram
participant A as 客戶端
participant B as 服務器
A->>+B: 請求數據
Note right of B: 處理請求
B-->>-A: 返回數據
A->>+B: 另一個請求
B->>+B: 內部處理
B-->>-B: 處理完成
B-->>-A: 返回結果
**渲染效果**:
```mermaid
sequenceDiagram
participant A as 客戶端
participant B as 服務器
A->>+B: 請求數據
Note right of B: 處理請求
B-->>-A: 返回數據
A->>+B: 另一個請求
B->>+B: 內部處理
B-->>-B: 處理完成
B-->>-A: 返回結果
循環和條件
markdown
```mermaid
sequenceDiagram
participant U as 用戶
participant S as 系統
U->>S: 登錄請求
alt 用戶名存在
S->>S: 驗證密碼
alt 密碼正確
S-->>U: 登錄成功
else 密碼錯誤
S-->>U: 密碼錯誤
end
else 用戶名不存在
S-->>U: 用戶不存在
end
opt 記住密碼
S->>S: 保存登錄狀態
end
**渲染效果**:
```mermaid
sequenceDiagram
participant U as 用戶
participant S as 系統
U->>S: 登錄請求
alt 用戶名存在
S->>S: 驗證密碼
alt 密碼正確
S-->>U: 登錄成功
else 密碼錯誤
S-->>U: 密碼錯誤
end
else 用戶名不存在
S-->>U: 用戶不存在
end
opt 記住密碼
S->>S: 保存登錄狀態
end
類圖 (Class Diagram)
markdown
```mermaid
classDiagram
class Animal {
+String name
+int age
+eat()
+sleep()
}
class Dog {
+String breed
+bark()
+wagTail()
}
class Cat {
+String color
+meow()
+purr()
}
Animal <|-- Dog
Animal <|-- Cat
class Owner {
+String name
+feedPet()
}
Owner --> Animal : owns
**渲染效果**:
```mermaid
classDiagram
class Animal {
+String name
+int age
+eat()
+sleep()
}
class Dog {
+String breed
+bark()
+wagTail()
}
class Cat {
+String color
+meow()
+purr()
}
Animal <|-- Dog
Animal <|-- Cat
class Owner {
+String name
+feedPet()
}
Owner --> Animal : owns
狀態圖 (State Diagram)
markdown
```mermaid
stateDiagram-v2
[*] --> 空閒
空閒 --> 運行 : 開始
運行 --> 暫停 : 暫停
運行 --> 完成 : 結束
暫停 --> 運行 : 繼續
暫停 --> 停止 : 停止
停止 --> 空閒 : 重置
完成 --> 空閒 : 重置
完成 --> [*]
state 運行 {
[*] --> 初始化
初始化 --> 處理中
處理中 --> 驗證
驗證 --> [*]
}
**渲染效果**:
```mermaid
stateDiagram-v2
[*] --> 空閒
空閒 --> 運行 : 開始
運行 --> 暫停 : 暫停
運行 --> 完成 : 結束
暫停 --> 運行 : 繼續
暫停 --> 停止 : 停止
停止 --> 空閒 : 重置
完成 --> 空閒 : 重置
完成 --> [*]
state 運行 {
[*] --> 初始化
初始化 --> 處理中
處理中 --> 驗證
驗證 --> [*]
}
甘特圖 (Gantt Chart)
markdown
```mermaid
gantt
title 項目開發時間線
dateFormat YYYY-MM-DD
section 需求分析
需求收集 :done, des1, 2024-01-01,2024-01-05
需求分析 :done, des2, after des1, 5d
需求評審 :done, des3, after des2, 2d
section 設計階段
系統設計 :active, design1, 2024-01-12, 7d
UI設計 : design2, after design1, 5d
數據庫設計 : design3, after design1, 3d
section 開發階段
前端開發 : dev1, after design2, 10d
後端開發 : dev2, after design3, 12d
測試 : test1, after dev1, 5d
**渲染效果**:
```mermaid
gantt
title 項目開發時間線
dateFormat YYYY-MM-DD
section 需求分析
需求收集 :done, des1, 2024-01-01,2024-01-05
需求分析 :done, des2, after des1, 5d
需求評審 :done, des3, after des2, 2d
section 設計階段
系統設計 :active, design1, 2024-01-12, 7d
UI設計 : design2, after design1, 5d
數據庫設計 : design3, after design1, 3d
section 開發階段
前端開發 : dev1, after design2, 10d
後端開發 : dev2, after design3, 12d
測試 : test1, after dev1, 5d
餅圖 (Pie Chart)
markdown
```mermaid
pie title 網站訪問來源
"搜索引擎" : 45
"社交媒體" : 25
"直接訪問" : 20
"郵件營銷" : 7
"其他" : 3
**渲染效果**:
```mermaid
pie title 網站訪問來源
"搜索引擎" : 45
"社交媒體" : 25
"直接訪問" : 20
"郵件營銷" : 7
"其他" : 3
用戶旅程圖 (User Journey)
markdown
```mermaid
journey
title 用戶購物旅程
section 發現
訪問主頁: 3: 用戶
瀏覽商品: 4: 用戶
搜索產品: 4: 用戶
section 考慮
查看詳情: 4: 用戶
比較價格: 3: 用戶
閱讀評價: 5: 用戶
section 購買
加入購物車: 4: 用戶
結算: 3: 用戶
支付: 2: 用戶
section 使用
收到商品: 5: 用戶
使用產品: 4: 用戶
寫評價: 4: 用戶
**渲染效果**:
```mermaid
journey
title 用戶購物旅程
section 發現
訪問主頁: 3: 用戶
瀏覽商品: 4: 用戶
搜索產品: 4: 用戶
section 考慮
查看詳情: 4: 用戶
比較價格: 3: 用戶
閱讀評價: 5: 用戶
section 購買
加入購物車: 4: 用戶
結算: 3: 用戶
支付: 2: 用戶
section 使用
收到商品: 5: 用戶
使用產品: 4: 用戶
寫評價: 4: 用戶
Git 圖 (Git Graph)
markdown
```mermaid
gitgraph
commit id: "初始提交"
commit id: "添加用戶模塊"
branch feature/auth
commit id: "添加登錄功能"
commit id: "添加注冊功能"
checkout main
commit id: "修復主頁bug"
merge feature/auth
commit id: "版本v1.0"
branch hotfix
commit id: "緊急修復"
checkout main
merge hotfix
commit id: "版本v1.0.1"
**渲染效果**:
```mermaid
gitgraph
commit id: "初始提交"
commit id: "添加用戶模塊"
branch feature/auth
commit id: "添加登錄功能"
commit id: "添加注冊功能"
checkout main
commit id: "修復主頁bug"
merge feature/auth
commit id: "版本v1.0"
branch hotfix
commit id: "緊急修復"
checkout main
merge hotfix
commit id: "版本v1.0.1"
實際應用場景
系統架構圖
markdown
```mermaid
flowchart TB
subgraph "用戶層"
Web[Web瀏覽器]
Mobile[移動應用]
API[API客戶端]
end
subgraph "網關層"
Gateway[API網關]
Auth[認證服務]
end
subgraph "服務層"
UserService[用戶服務]
OrderService[訂單服務]
PaymentService[支付服務]
NotificationService[通知服務]
end
subgraph "數據層"
UserDB[(用戶數據庫)]
OrderDB[(訂單數據庫)]
Cache[(Redis緩存)]
Queue[消息隊列]
end
Web --> Gateway
Mobile --> Gateway
API --> Gateway
Gateway --> Auth
Gateway --> UserService
Gateway --> OrderService
Gateway --> PaymentService
UserService --> UserDB
OrderService --> OrderDB
PaymentService --> Queue
NotificationService --> Queue
UserService --> Cache
OrderService --> Cache
style Gateway fill:#e1f5fe
style Auth fill:#fff3e0
style Cache fill:#f3e5f5
### API 調用流程
```markdown
```mermaid
sequenceDiagram
participant C as 客戶端
participant G as API網關
participant A as 認證服務
participant U as 用戶服務
participant D as 數據庫
participant R as Redis
C->>G: 請求用戶信息
G->>A: 驗證Token
A->>R: 檢查Token緩存
R-->>A: Token有效
A-->>G: 認證成功
G->>U: 獲取用戶信息
U->>R: 檢查用戶緩存
alt 緩存存在
R-->>U: 返回用戶數據
else 緩存不存在
U->>D: 查詢數據庫
D-->>U: 返回用戶信息
U->>R: 更新緩存
end
U-->>G: 返回用戶信息
G-->>C: 響應用戶數據
### 業務流程圖
```markdown
```mermaid
flowchart TD
Start([用戶下單]) --> Check{檢查庫存}
Check -->|有庫存| Reserve[預留庫存]
Check -->|無庫存| OutOfStock[庫存不足]
OutOfStock --> Notify[通知用戶]
Notify --> End1([結束])
Reserve --> Payment{支付處理}
Payment -->|成功| ConfirmOrder[確認訂單]
Payment -->|失敗| ReleaseStock[釋放庫存]
ReleaseStock --> PaymentFailed[支付失敗]
PaymentFailed --> End2([結束])
ConfirmOrder --> UpdateInventory[更新庫存]
UpdateInventory --> SendNotification[發送通知]
SendNotification --> Logistics[安排物流]
Logistics --> End3([訂單完成])
style Start fill:#e8f5e8
style End1 fill:#ffebee
style End2 fill:#ffebee
style End3 fill:#e8f5e8
style OutOfStock fill:#ffebee
style PaymentFailed fill:#ffebee
## 樣式和主題
### 節點樣式
```markdown
```mermaid
flowchart LR
A[默認樣式] --> B[樣式1]
A --> C[樣式2]
A --> D[樣式3]
style B fill:#f9f,stroke:#333,stroke-width:4px
style C fill:#bbf,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
style D fill:#f96,stroke:#333,stroke-width:4px,color:#fff
### 類樣式
```markdown
```mermaid
flowchart LR
A[節點A]:::classA --> B[節點B]:::classB
A --> C[節點C]:::classC
classDef classA fill:#e1f5fe,stroke:#01579b,stroke-width:2px
classDef classB fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
classDef classC fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px
## 配置和兼容性
### VitePress 配置
```javascript
// .vitepress/config.js
export default {
markdown: {
mermaid: true
}
}
GitHub 支持
GitHub 原生支持 Mermaid,可以直接在 Markdown 文件中使用:
markdown
```mermaid
graph LR
A --> B
### 其他平台支持
| 平台 | 支持狀態 | 配置要求 |
|------|----------|----------|
| **GitHub** | ✅ 原生支持 | 無需配置 |
| **GitLab** | ✅ 原生支持 | 無需配置 |
| **VitePress** | ✅ 插件支持 | 需要配置 |
| **Jekyll** | ✅ 插件支持 | 安裝插件 |
| **Hugo** | ✅ 主題支持 | 依賴主題 |
## 最佳實踐
### 設計建議
```markdown
✅ 推薦做法:
1. **保持簡潔**:
- 避免過於復雜的圖表
- 使用清晰的標簽和連接
2. **合理布局**:
- 選擇合適的圖表方向
- 保持邏輯流向清晰
3. **統一樣式**:
- 使用一致的顏色主題
- 保持圖表風格統一
4. **添加說明**:
- 為復雜圖表添加標題
- 提供必要的文字說明
❌ 避免做法:
1. 圖表過於復雜難以理解
2. 連接線交叉過多
3. 標簽模糊不清
4. 缺少必要的圖例
性能考慮
markdown
- **大型圖表優化**:
- 考慮拆分復雜圖表
- 使用子圖組織結構
- **加載性能**:
- 避免在單頁面使用過多圖表
- 考慮懶加載實現
- **移動端適配**:
- 確保圖表在小屏幕上可讀
- 考慮橫向滾動設計
相關語法
工具和資源
在線編輯器
- Mermaid Live Editor: 官方在線編輯器
- Draw.io: 通用圖表繪制工具
- Lucidchart: 專業圖表制作平台
- Excalidraw: 手繪風格圖表工具
開發工具
- Mermaid CLI: 命令行工具
- VS Code Mermaid: Visual Studio Code 插件
- Atom Mermaid: Atom 編輯器插件
- IntelliJ Mermaid: JetBrains IDE 插件
參考資源
- Mermaid 官方文檔: 完整語法參考
- Mermaid 示例庫: 各種圖表示例
- GitHub Mermaid: 在 GitHub 中使用
- Awesome Mermaid: 相關資源收集
通過掌握流程圖語法,您可以在文檔中創建專業的可視化圖表,提升內容的表達效果和理解度。