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)
