Mermaid Diagram là gì?
Mermaid is a JavaScript based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams. The main purpose of Mermaid is to help documentation catch up with development.
Mermaid là một thư viện JavaScript để sinh biểu đồ, đồ thị trong tài liệu Markdown bằng mã thay vì file ảnh nhị phân. Ưu điểm của Mermaid diagram là bạn có thể chỉnh lại code, nội dung biểu đồ cũng thay đổi theo tức thì. Hiện nay chức năng Editor markdown của Techmaster đã hỗ trợ nhúng các biểu đồ, độ thị cú pháp Mermaid vào.
Để nhúng các bạn cần gõ như sau
~~~mermaid
code mermaid tùy loại diagram
~~~
Dưới đây là các biểu đồ Mermaid các thể loại để bạn thấy được sức mạnh của thư viện này.
Bar chart
xychart-beta
title "Sales Revenue"
x-axis [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec]
y-axis "Revenue (in $)" 4000 --> 11000
bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
line [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]Pie chart
pie title What Voldemort doesn't have?
"FRIENDS" : 2
"FAMILY" : 3
"NOSE" : 45Sequence diagram
Ví dụ 1
sequenceDiagram
loop Daily query
Alice->>Bob: Hello Bob, how are you?
alt is sick
Bob->>Alice: Not so good :(
else is well
Bob->>Alice: Feeling fresh like a daisy
end
opt Extra response
Bob->>Alice: Thanks for asking
end
endVí dụ 2
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!Ví dụ 3
sequenceDiagram
actor Alice
actor Bob
actor Carl
Alice->>Bob: Hello Bob, how are you ?
Bob->>Alice: Fine, thank you. And you?
Alice->>Carl: Hi Carl!
create actor D as Donald
Carl->>D: Hi!
destroy Carl
Alice-xCarl: We are too many
destroy Bob
Bob->>Alice: I agreeState Diagram
stateDiagram
[*] --> Still
Still --> [*]
Still --> Moving
Moving --> Still
Moving --> Crash
Crash --> [*]Flow chart
Ví dụ 1
graph LR
A[Square Rect] -- Link text --> B((Circle))
A --> C(Round Rect)
B --> D{Rhombus}
C --> DVí dụ 2
graph TD
A[Christmas] -->|Get money| B(Go shopping)
B --> C{Let me think}
C -->|One| D[Laptop]
C -->|Two| E[iPhone]
C -->|Three| F[Car]Ví dụ 3
graph TD
Bat(fa:fa-car-battery Batteries) -->|150a 50mm| ShutOff
Bat -->|150a 50mm| Shunt
ShutOff[Shut Off] -->|150a 50mm| BusPos[Bus Bar +]
Shunt -->|150a 50mm| BusNeg[Bus Bar -]
BusPos -->|40a| Fuse[Fuse Box]
BusPos -->|?a| Old{Old Wiring}
BusNeg -->|40a| Fuse
Fuse -->|10a| USB(USB-C)
Fuse -->|10a| USB
Fuse -->|1.5a| Switch -->|1.5a| Wifi
Wifi -->|1.5a| Fuse
Fuse -->|10a| Cig1[Cigarette Lighter]
Fuse -->|10a| Cig1
Fuse -->|10a| Cig2[Cigarette Lighter Near Bed]
Fuse -->|10a| Cig2
BusNeg -->|?a| Old
Solar --> SolarCont[Solar Controller]
Solar --> SolarCont
SolarCont --> BusNeg
SolarCont --> BusPos
linkStyle 0 stroke-width:2px,fill:none,stroke:red;
linkStyle 1 stroke-width:2px,fill:none,stroke:black;
linkStyle 2 stroke-width:2px,fill:none,stroke:red;
linkStyle 3 stroke-width:2px,fill:none,stroke:black;
linkStyle 4 stroke-width:2px,fill:none,stroke:red;
linkStyle 5 stroke-width:2px,fill:none,stroke:red;
linkStyle 6 stroke-width:2px,fill:none,stroke:black;
linkStyle 7 stroke-width:2px,fill:none,stroke:black;
linkStyle 8 stroke-width:2px,fill:none,stroke:red;
linkStyle 9 stroke-width:2px,fill:none,stroke:red;
linkStyle 10 stroke-width:2px,fill:none,stroke:red;
linkStyle 11 stroke-width:2px,fill:none,stroke:black;
linkStyle 12 stroke-width:2px,fill:none,stroke:red;
linkStyle 13 stroke-width:2px,fill:none,stroke:black;
linkStyle 14 stroke-width:2px,fill:none,stroke:red;
linkStyle 15 stroke-width:2px,fill:none,stroke:black;
linkStyle 16 stroke-width:2px,fill:none,stroke:black;
linkStyle 17 stroke-width:2px,fill:none,stroke:red;
linkStyle 18 stroke-width:2px,fill:none,stroke:black;
linkStyle 19 stroke-width:2px,fill:none,stroke:black;Class diagram
Ví dụ 1
classDiagram classA --|> classB : Inheritance classC --* classD : Composition classE --o classF : Aggregation classG --> classH : Association classI -- classJ : Link(Solid) classK ..> classL : Dependency classM ..|> classN : Realization classO .. classP : Link(Dashed)
Ví dụ 2
---
title: Animal example
---
classDiagram
note "From Duck till Zebra"
Animal <|-- Duck
note for Duck "can fly\ncan swim\ncan dive\ncan help in debugging"
Animal <|-- Fish
Animal <|-- Zebra
Animal : +int age
Animal : +String gender
Animal: +isMammal()
Animal: +mate()
class Duck{
+String beakColor
+swim()
+quack()
}
class Fish{
-int sizeInFeet
-canEat()
}
class Zebra{
+bool is_wild
+run()
}Entity Diagram
Ví dụ 1
---
title: Order example
---
erDiagram
CUSTOMER ||--o{ ORDER : places
ORDER ||--|{ LINE-ITEM : contains
CUSTOMER }|..|{ DELIVERY-ADDRESS : usesVí dụ 2
erDiagram
CUSTOMER ||--o{ ORDER : places
CUSTOMER {
string name
string custNumber
string sector
}
ORDER ||--|{ LINE-ITEM : contains
ORDER {
int orderNumber
string deliveryAddress
}
LINE-ITEM {
string productCode
int quantity
float pricePerUnit
}Ví dụ 3
erDiagram
CAR ||--o{ NAMED-DRIVER : allows
CAR {
string registrationNumber PK
string make
string model
string[] parts
}
PERSON ||--o{ NAMED-DRIVER : is
PERSON {
string driversLicense PK "The license #"
string(99) firstName "Only 99 characters are allowed"
string lastName
string phone UK
int age
}
NAMED-DRIVER {
string carRegistrationNumber PK, FK
string driverLicence PK, FK
}
MANUFACTURER only one to zero or more CAR : makesMind map
Ví dụ 1
mindmap
root((mindmap))
Origins
Long history
::icon(fa fa-book)
Popularisation
British popular psychology author Tony Buzan
Research
On effectiveness
and features
On Automatic creation
Uses
Creative techniques
Strategic planning
Argument mapping
Tools
Pen and paper
MermaidVí dụ 2
mindmap
Shapes
Default
[Square]
(Rounded)
((Circle))
))Bang((
)Cloud(
{{Hexagon}}Ví dụ 3
mindmap
Talk
::icon(fa fa-microphone)
Notebooks
::icon(fa fa-book)
Jupyter Notebooks
::icon(fa fa-rocket)
IDEs
::icon(fa fa-code)
Anaconda
::icon(fa fa-file-code)
Polyglot Notebooks
::icon(fa fa-pencil)
Installation
::icon(fa fa-wrench)
Languages
::icon(fa fa-comment)
Variable Sharing
::icon(fa fa-share)
Next Steps
::icon(fa fa-arrow-right)Git diagram
--- title: Example Git diagram --- gitGraph commit commit branch develop checkout develop commit commit checkout main merge develop commit commit
Timelime
timeline
title History of Social Media Platform
2002 : LinkedIn
2004 : Facebook
: Google
2005 : Youtube
2006 : TwitterGantt Chart
gantt
title A Gantt Diagram
dateFormat YYYY-MM-DD
section Section
A task :a1, 2014-01-01, 30d
Another task :after a1, 20d
section Another
Task in Another :2014-01-12, 12d
another task :24d
Bình luận