图表¶
图表有助于传达之间的复杂关系和相互联系 不同的技术组件,是项目的重要补充 文档。MkDocs的素材与[Meamaid.js]集成,这是一个非常 用于绘制图表的流行且灵活的解决方案。
配置¶
此配置支持[Meamaid.js]图表的原生支持。材料 对于MkDocs,当页面 包含一个“美人鱼”代码块:
markdown_extensions:
- pymdownx.superfences:
custom_fences:
- name: mermaid
class: mermaid
format: !!python/name:pymdownx.superfences.fence_code_format
无需进一步配置。与自定义集成相比的优势:
- 无需额外努力即可使用[即时加载]
- 图表自动使用
mkdocs.yml
中定义的字体和颜色1 - 字体和颜色可以通过[附加样式表]进行定制
- 同时支持浅色和深色配色方案——请在本页尝试_
使用¶
使用流程图¶
Flowcharts 是表示工作流或流程的图表。步骤 被渲染为各种类型的节点,并通过边连接,描述 必要的步骤顺序:
Flow chart
``` mermaid
graph LR
A[Start] --> B{Error?};
B -->|Yes| C[Hmm...];
C --> D[Debug];
D --> B;
B ---->|No| E[Yay!];
```
graph LR
A[Start] --> B{Error?};
B -->|Yes| C[Hmm...];
C --> D[Debug];
D --> B;
B ---->|No| E[Yay!];
使用序列图¶
Sequence diagrams 将特定场景描述为顺序交互 在多个对象或参与者之间,包括交换的消息 这些演员之间:
Sequence diagram
``` mermaid
sequenceDiagram
autonumber
Alice->>John: Hello John, how are you?
loop Healthcheck
John->>John: Fight against hypochondria
end
Note right of John: Rational thoughts!
John-->>Alice: Great!
John->>Bob: How about you?
Bob-->>John: Jolly good!
```
sequenceDiagram
autonumber
Alice->>John: Hello John, how are you?
loop Healthcheck
John->>John: Fight against hypochondria
end
Note right of John: Rational thoughts!
John-->>Alice: Great!
John->>Bob: How about you?
Bob-->>John: Jolly good!
使用状态图¶
State diagrams 是描述系统行为的好工具, 将其分解为有限数量的状态,并在这些状态之间进行转换 声明:
State diagram
``` mermaid
stateDiagram-v2
state fork_state <<fork>>
[*] --> fork_state
fork_state --> State2
fork_state --> State3
state join_state <<join>>
State2 --> join_state
State3 --> join_state
join_state --> State4
State4 --> [*]
```
stateDiagram-v2
state fork_state <<fork>>
[*] --> fork_state
fork_state --> State2
fork_state --> State3
state join_state <<join>>
State2 --> join_state
State3 --> join_state
join_state --> State4
State4 --> [*]
使用类图¶
Class diagrams 是面向对象编程的核心,描述了 通过将实体建模为类以及它们之间的关系来构建系统的结构 他们:
Class diagram
``` mermaid
classDiagram
Person <|-- Student
Person <|-- Professor
Person : +String name
Person : +String phoneNumber
Person : +String emailAddress
Person: +purchaseParkingPass()
Address "1" <-- "0..1" Person:lives at
class Student{
+int studentNumber
+int averageMark
+isEligibleToEnrol()
+getSeminarsTaken()
}
class Professor{
+int salary
}
class Address{
+String street
+String city
+String state
+int postalCode
+String country
-validate()
+outputAsLabel()
}
```
classDiagram
Person <|-- Student
Person <|-- Professor
Person : +String name
Person : +String phoneNumber
Person : +String emailAddress
Person: +purchaseParkingPass()
Address "1" <-- "0..1" Person:lives at
class Student{
+int studentNumber
+int averageMark
+isEligibleToEnrol()
+getSeminarsTaken()
}
class Professor{
+int salary
}
class Address{
+String street
+String city
+String state
+int postalCode
+String country
-validate()
+outputAsLabel()
}
使用实体关系图¶
[实体关系图]由实体类型组成,并指定 实体之间存在的关系。它描述了相互关联的事物 特定的知识领域:
Entity-relationship diagram
``` mermaid
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE-ITEM : contains
LINE-ITEM {
string name
int pricePerUnit
}
CUSTOMER }|..|{ DELIVERY-ADDRESS : uses
```
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE-ITEM : contains
LINE-ITEM {
string name
int pricePerUnit
}
CUSTOMER }|..|{ DELIVERY-ADDRESS : uses
其他图表类型¶
除了上面列出的图表类型外,[Meamaid.js]还支持 [饼图]、[甘特图]、[用户旅程]、[数字图]和 [需求图],所有这些都没有得到Material的正式支持 MkDocs。这些图表应该仍然可以像[Meamaid.js]所宣传的那样工作,但是 我们认为它们不是一个好的选择,主要是因为它们在移动设备上运行不佳。
-
虽然所有[Meamaid.js]功能都应该开箱即用,但Material for MkDocs目前只会调整流程图的字体和颜色, 序列图、类图、状态图和实体关系 图表。有关此原因的更多信息,请参阅[其他图表]部分 目前尚未对所有图表实现。 ↩