首頁

目前文章總數:255 篇

  

最後更新:2026年 10月 24日

0006. 基於 Markdown 流程圖工具 - Mermaid

日期:2024年 03月 10日

標籤: Program Flow Chart Flow Chart Markdown Mermaid Visual Studio Code

摘要:資訊筆記


應用所需:1. Markdown 語法基礎
     2. 本篇為 Mermaid 版本:v10.8.0
解決問題:使用 Markdwon 腳本也可以實現畫出流程圖 (※建議不複雜的圖形,否則不好維護調整)
官網連結:連結
官方工具:線上即時編輯器連結
基本介紹:本篇分為4大部分。
第一部分:Mermaid 工具介紹
第二部分:如何在 VS Code 用 Mermaid
第三部分:Mermaid 官方在線編輯器
第四部分:實作 Mermaid 流程圖






第一部分:Mermaid 工具介紹

Step 1:介紹

Mermaid 是圖形即代碼(diagrams-as-code)的工具類型,官網的介紹相當清楚。
以下是官網對 Mermaid 的介紹:

關於 Mermaid:

Mermaid 允許你使用文字和程式碼創建圖表和視覺化。

它是一個基於 JavaScript 的圖表繪製工具,可渲染 Markdown 啟發的文字定義以動態建立和修改圖表。





Step 2:優缺點

相較於 GitMind、Draw.io、Visio、PowerPoint 等主流畫流程圖的工具
Mermaid 有以下[優點]:

1. Markdown 語法 : Mermaid 使用 Markdown 語法,對於熟悉 Markdown 的使用者來說,學習成本較低。
2. 跨平台 : Mermaid 支持在網頁和 Node.js 環境下運行,可以在不同平台上使用。
3. 易於修改 : Mermaid 的 Markdown 語法易於修改,可以在 Markdown 文件中直接編輯圖形,而不需要使用專門的編輯器。
4. 輕量級 : Mermaid 的代碼量相對較小,編譯速度快,運行效率高。
5. 支持多種格式 : Mermaid 支持將圖形導出為多種格式,如 PNG、SVG、PDF 等。
6. 一致性 : 基於 Markdown 語法,相同文字下,圖形的顯示結果將會一致,如時序圖、類圖。


Mermaid 有以下[缺點]:

1. 輕量級 : 由於輕量級 Mermaid 的功能相對較簡單,避免繪製過於複雜的圖形,如適合繪製流程圖、時序圖等。
2. 技術門檻 : Mermaid 使用 Markdown 語法,未使用過此語法使用者,需要學習成本。
3. 功能限制 : Mermaid 的功能受到 Markdown 語法的限制,無法繪製複雜的圖形、不支持動態圖形效果。



Step 3:使用對象 & 如何使用

基於上述優缺點,如果不熟悉 Markdown 語法、或者畫的圖形較複雜,則不建議使用 Mermaid。
官網的說明寫得很完整,並且約 300~400 人一起維護此開源,左側入門(Getting Started),列出五種方式使用
※本篇介紹 - 1. 即時線上編輯(Live Editor)
      - 2. 使用 Mermaid 插件整合 (Using Mermaid Plugins and Integrations) ※Visual Studio Code


Step 4:支援的圖形

Mermaid 版本:v10.8.0 共支援 18 種圖形繪出

名稱 分隔 扼要解釋
流程圖 (Flowchart) : 用於描述流程、流程或操作的圖形表示。
序列圖 (Sequence Diagram) : 用於描述對象之間交互的圖形表示。
類圖 (Class Diagram) : 用於描述類之間的關係和屬性的圖形表示。
狀態圖 (State Diagram) : 用於描述對象的狀態和狀態轉換的圖形表示。
實體關係圖 (Entity Relationship Diagram) : 用於描述實體之間的關係和屬性的圖形表示。
用戶旅程圖 (User Journey) : 用於描述用戶在系統中的行為和操作的圖形表示。
甘特圖 (Gantt) : 用於描述項目的時間軸和進度的圖形表示。
餅圖 (Pie Chart) : 用於描述數據的比例和百分比的圖形表示。
象限圖 (Quadrant Chart) : 用於描述數據的分類和分布的圖形表示。
需求圖 (Requirement Diagram) : 用於描述系統需求和功能的圖形表示。
Git流程圖 (Gitgraph (Git) Diagram) : 用於描述Git分支和提交的圖形表示。
C4圖 (C4 Diagram) : 用於描述系統架構和結構的圖形表示。
心智圖 (Mindmaps) : 用於描述思維和概念的圖形表示。
時間線圖 (Timeline) : 用於描述時間軸和事件的圖形表示。
交互UML (Zenuml) : 用於描述UML圖和設計的圖形表示。
流圖 (Sankey) : 用於描述流程和流動的圖形表示。
XY軸圖表 (XYChart) : 用於描述數據的關係和趨勢的圖形表示。
區塊流程圖 (Block Diagram) : 用於描述系統結構和組成的圖形表示。


Diagram Syntax 的最下面也提供了基本範例,如圖:




第二部分:如何在 VS Code 用 Mermaid

Step 1:安裝 Markdown Preview Mermaid Support

選擇左邊的 Extensions -> 輸入 Markdown Preview Mermaid Support -> 安裝 Install


Step 2:建立Md檔案

新建一個副檔名為 .md 的檔案後,將 Mermaid 的 FlowChart 範例碼貼上

 ```mermaid
graph LR
    A[Square Rect] -- Link text --> B((Circle))
    A --> C(Round Rect)
    B --> D{Rhombus}
    C --> D


代碼貼上後,選擇最右邊的預覽 ※熱鍵:ctrl + shift + v


Step 3:顯示圖形結果

執行後就會出現流程圖的結果


Step 4:安裝高量顯示優化套件

如果直接在 .md 檔案中編輯,會發現 mermaid 的顏色都是白色的,在撰寫的過程中十分不方便
可安裝 Mermaid Markdown Syntax Highlighting 套件來解決此問題


Step 5:高量顯示優化套件-結果

比較前後差異,可以發現在編輯上會相當方便。


第三部分:Mermaid 官方在線編輯器

Step 1:開啟線上編輯

在官網的教學文件中會有Live Editor連結,點擊跳轉


Step 2:編輯畫面

如果有連網路,可以在編輯頁面中進行編輯,基本上操作與VS Code上一致


第四部分:實作 Mermaid 流程圖

Step 1:入門學習

Mermaid 官網教學文件寫得相當不錯,如果全部讀完大約1小時左右即可
雖然一共有18種圖形,但是部分圖形的文本量是相當少的。
複雜的功能,繪畫圖形也是官方為了未來給 AI 使用時,便於撰寫一致性的結果,
※ Mermaid Chart 是要收費的版本,可在 ChatGpt 上做插件使用,如果免費想體驗,可以試用14天

Step 2:插入排序法-流程圖 - 結果比較

將Visustin V8 Demo工具自動畫出的流程圖,做個轉換,可以得到以下代碼:
※代碼來源:插入排序法

<!-- 插入排序法 Mermaid 版本 -->
```mermaid
flowchart TB
    A("public List<T> 
       InsertionAscendingSorting(List<T> 
       items)") --> B["int keyIndex = 1"]
    B --> C{"keyIndex < items.Count?"}
    C -->|"No"| D["return items;"]    
    C -->|"Yes"| E["T keyValue = items[keyIndex];
                    int index = keyIndex - 1"]
    E --> F["index >=0?"]
    F -->|"Yes"| G{"keyValue.CompareTo(items[index])
                     < 0 ?"}
    F -->|"No"| H["keyIndex ++"]
    H --> C
    G -->|"Yes"| I["items[index + 1] = items[index];
                    items[index] = keyValue;"]
    G -->|"No"| H
    I --> J["index--"]
    J --> F
    D --> END["END"]


用 Visustin V8 Demo 的插入排序法流程圖如下:


用 Mermaid 轉換後插入排序法流程圖如下:


在更複雜的流程圖如果後續要維護會有代碼調整的困難,但以未來結合AI的實用來看。
Mermaid 很有機會成為未來圖形即代碼(diagrams-as-code)這一類型上的標準。