Markdown中Mermaid的使用
概述
什么是Mermaid?
- Mermaid是一种基于Javascript的绘图工具,使用类似于Markdown的语法,使用户可以方便快捷地通过代码创建图表。
- 项目地址:https://github.com/mermaid-js/mermaid
怎么使用Mermaid?
- 使用特定的Mermaid渲染器;
- 使用集成了Mermaid渲染功能的Markdown编辑器,如Typora。使用时,需要将代码块的语言选择为Mermaid。
(然而我自己使用的是vscode直接写源代码) <( ̄︶ ̄)>
- Mermaid能绘制哪些图?
- 饼状图:使用pie关键字,具体用法后文将详细介绍
- 流程图:使用graph关键字,具体用法后文将详细介绍
- 序列图:使用sequenceDiagram关键字
- 甘特图:使用gantt关键字
- 类图:使用classDiagram关键字
- 状态图:使用stateDiagram关键字
- 用户旅程图:使用journey关键字
参考:Mermaid从入门到入土——Markdown进阶语法的概述
样例
摘自:官方Examples
注:因为渲染原因,以下代码不是真的写在markdown代码块中的,而是写在mermaid代码块中的!
基本饼图
pie title NETFLIX |
pie title NETFLIX
"Time spent looking for movie" : 90
"Time spent watching it" : 10
pie title What Voldemort doesn't have? |
pie title What Voldemort doesn't have?
"FRIENDS" : 2
"FAMILY" : 3
"NOSE" : 45
基本时序图
sequenceDiagram |
sequenceDiagram
Alice ->> Bob: Hello Bob, how are you?
Bob-->>John: How about you John?
Bob--x Alice: I am good thanks!
Bob-x John: I am good thanks!
Note right of John: Bob thinks a long
long time, so long
that the text does
not fit on a row.
Bob-->Alice: Checking with John...
Alice->John: Yes... John, how are you?
基本流程图
graph LR |
graph LR
A[Square Rect] -- Link text --> B((Circle))
A --> C(Round Rect)
B --> D{Rhombus}
C --> D
带有一些样式的更大流程图
graph TB |
graph TB
sq[Square shape] --> ci((Circle shape))
subgraph A
od>Odd shape]-- Two line
edge comment --> ro
di{Diamond with
line break} -.-> ro(Rounded
square
shape)
di==>ro2(Rounded square shape)
end
%% Notice that no text in shape are added here instead that is appended further down
e --> od3>Really long text with linebreak
in an Odd shape]
%% Comments after double percent signs
e((Inner / circle
and some odd
special characters)) --> f(,.?!+-*ز)
cyr[Cyrillic]-->cyr2((Circle shape Начало));
classDef green fill:#9f6,stroke:#333,stroke-width:2px;
classDef orange fill:#f96,stroke:#333,stroke-width:4px;
class sq,e green
class di orange
序列图:循环、alt 和 opt
sequenceDiagram |
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
end
序列图:循环中给自己的消息
sequenceDiagram |
sequenceDiagram
participant Alice
participant Bob
Alice->>John: Hello John, how are you?
loop Healthcheck
John->>John: Fight against hypochondria
end
Note right of John: Rational thoughts
prevail...
John-->>Alice: Great!
John->>Bob: How about you?
Bob-->>John: Jolly good!
序列图:博客应用服务通信
sequenceDiagram |
sequenceDiagram
participant web as Web Browser
participant blog as Blog Service
participant account as Account Service
participant mail as Mail Service
participant db as Storage
Note over web,db: The user must be logged in to submit blog posts
web->>+account: Logs in using credentials
account->>db: Query stored accounts
db->>account: Respond with query result
alt Credentials not found
account->>web: Invalid credentials
else Credentials found
account->>-web: Successfully logged in
Note over web,db: When the user is authenticated, they can now submit new posts
web->>+blog: Submit new post
blog->>db: Store post data
par Notifications
blog--)mail: Send mail to blog subscribers
blog--)db: Store in-site notifications
and Response
blog-->>-web: Successfully posted
end
end
Hexo对Mermaid的支持
在Hexo中,除了使用mermaid的代码块的方式,例如:
pie |
pie
title Key elements in Product X
"Calcium" : 42.96
"Potassium" : 50.05
"Magnesium" : 10.01
"Iron" : 5
还可以使用类似类似HTML?JSP?啥的标签来写:
例如:
{% mermaid %} |
pie
title Key elements in Product X
"Calcium" : 42.96
"Potassium" : 50.05
"Magnesium" : 10.01
"Iron" : 5
线上是能看见啦,但是线下。。。
上一个就不会这样
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 零泽!

%E2%9C%A7Great%20Crisis%20II.jpg)
