## 官方文档
https://mermaid.nodejs.cn/intro/
## 图的种类
| 图表类型 | 描述 | 主要用途 |
| ----------------------------------- | ---------------------- | ------------------ |
| 流程图 (Flowchart) | 使用节点和连接线描述过程或工作流程 | 展示算法、工作流程、决策过程 |
| 类图 (Class Diagram) | 展示类、属性、方法及其关系 | 描述面向对象系统的静态结构 |
| 状态图 (State Diagram) | 描述对象在其生命周期中的各种状态及转换 | 模拟系统状态变化、描述状态机 |
| 实体关系图 (Entity Relationship Diagram) | 描述实体类型、属性和关系 | 数据库设计、系统数据模型描述 |
| 用户旅程图 (User Journey) | 可视化用户与产品/服务的交互过程 | 用户体验设计、服务设计 |
| 饼图 (Pie Chart) | 圆形图表,展示数据的比例分布 | 数据可视化、比例展示 |
| 需求图 (Requirement Diagram) | 描述系统需求及其关系 | 软件工程、需求分析 |
| Git图 (Gitgraph) | 可视化Git分支和提交历史 | 版本控制工作流程展示 |
| C4架构图 (C4 Diagram) | 描述软件架构的不同层次 | 软件架构设计、系统结构展示 |
| 思维导图 (Mindmap) | 围绕中心主题组织和呈现相关概念 | 头脑风暴、知识组织 |
| 象限图 (Quadrant Chart) | 将数据点放置在二维网格中的四个象限内 | 决策分析、优先级排序 |
| | | |
| | | |
| | | |
| 时间线 (Timeline) | 不太好,内容一多就很挤,看不清楚 | |
| 甘特图 (Gantt) | 还不错,可以代替时间线图,做需求的时候可以用 | |
| 泳道图/序列图 (Sequence Diagram) | 非常棒!| 描述系统组件间的通信、API调用顺序 |
## 泳道图
```mermaid
sequenceDiagram
participant User
participant Frontend
participant Google
participant Backend
User->>Frontend: 点击"使用Google登录"
Frontend->>Google: 请求认证
Google->>User: 显示登录/授权页面
User->>Google: 登录并授权
Google->>Frontend: 返回ID token
Frontend->>Backend: 发送ID token
Backend->>Google: 验证ID token
Google->>Backend: 确认token有效
Backend->>Frontend: 创建会话,返回自定义token或session
Frontend->>User: 显示登录成功
```
## 节点
1. 构图 LR (Left to Right):BT (Bottom to Top)
2. 节点:
1. 形状 `(())`圆形, `{}`,`[]`,redis 圆柱体`[()]`
2. 上色 `style C fill:#bbf,stroke:#333,stroke-width:4px;`
3. 箭头
1. 中间加字 `E[essay]-->|处理| P[分词]`
```mermaid
graph LR
A[travelco] -->|1. 请求数据| B(SPA)
B -->|2. 返回数据| A
A -->|3. 存储数据| C[(Redis)]
D[Captain] -->|4. 读取数据| C
class A,B,D component;
class C database;
```
这个增强版的 Mermaid 图表展示了以下额外的功能和"花活":
1. 样式定义:使用 `classDef` 定义了不同的样式类。
2. 子图(Subgraph):将券处理(CouponHandle)部分封装在一个子图中,使结构更清晰。
3. 方向控制:在子图中使用 ```mermaid
graph LR
A[travelco]-->|1. 请求数据| B(SPA)
B -->|2. 返回数据| A
A -->|3. 存储数据| C[(Redis)]
D[Captain]-->|4. 读取数据| C
class A,B,D component;
class C database;
```0(Top to Bottom)控制流程方向。
4. 。
5. 样式应用:对不同的节点应用了自定义样式。
6. 注释:添加了一个指向 Context 的注释。
7. 图标:在 Context 节点旁添加了一个齿轮图标(使用 Font Awesome)。
8. 点击事件:为 Context 节点添加了一个点击事件(注意:这在某些 Mermaid 渲染器中可能不支持)。
9. 换行:在节点文本中使用 ```mermaid
graph LR
A[travelco] -->|1. 请求数据| B(SPA)
B -->|2. 返回数据| A
A -->|3. 存储数据| C[(Redis)]
D[Captain] -->|4. 读取数据| C
class A,B,D component;
class C database;
```1 来实现换行,使显示更整洁。
10. 连接线样式:使用 ```mermaid
graph LR
A[travelco] -->|1. 请求数据| B(SPA)
B -->|2. 返回数据| A
A -->|3. 存储数据| C[(Redis)]
D[Captain] -->|4. 读取数据| C
class A,B,D component;
class C database;
```2 代替 ```mermaid
graph LR
A[travelco] -->|1. 请求数据| B(SPA)
B -->|2. 返回数据| A
A -->|3. 存储数据| C[(Redis)]
D[Captain] -->|4. 读取数据| C
class A,B,D component;
class C database;
```3 来创建无箭头的连接线(用于图标连接)。
[mermaid](mermaid.md)里这个染色不错
```Java
classDef gradient fill:#f96,stroke:#333,stroke-width:2px;
```