分享程式代碼相關筆記
目前文章總數:157 篇
最後更新:2024年 12月 07日
Mermaid 是圖形即代碼(diagrams-as-code)的工具類型,官網的介紹相當清楚。
以下是官網對 Mermaid 的介紹:
關於 Mermaid:
Mermaid 允許你使用文字和程式碼創建圖表和視覺化。
它是一個基於 JavaScript 的圖表繪製工具,可渲染 Markdown 啟發的文字定義以動態建立和修改圖表。
相較於 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 語法的限制,無法繪製複雜的圖形、不支持動態圖形效果。 |
基於上述優缺點,如果不熟悉 Markdown 語法、或者畫的圖形較複雜,則不建議使用 Mermaid。
官網的說明寫得很完整,並且約 300~400 人一起維護此開源,左側入門(Getting Started),列出五種方式使用
※本篇介紹 - 1. 即時線上編輯(Live Editor)
- 2. 使用 Mermaid 插件整合 (Using Mermaid Plugins and Integrations) ※Visual Studio Code
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 的最下面也提供了基本範例,如圖:
選擇左邊的 Extensions -> 輸入 Markdown Preview Mermaid Support -> 安裝 Install
新建一個副檔名為 .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
執行後就會出現流程圖的結果
如果直接在 .md 檔案中編輯,會發現 mermaid 的顏色都是白色的,在撰寫的過程中十分不方便
可安裝 Mermaid Markdown Syntax Highlighting 套件來解決此問題
比較前後差異,可以發現在編輯上會相當方便。
在官網的教學文件中會有Live Editor連結,點擊跳轉
如果有連網路,可以在編輯頁面中進行編輯,基本上操作與VS Code上一致
Mermaid 官網教學文件寫得相當不錯,如果全部讀完大約1小時左右即可
雖然一共有18種圖形,但是部分圖形的文本量是相當少的。
複雜的功能,繪畫圖形也是官方為了未來給 AI 使用時,便於撰寫一致性的結果,
※ Mermaid Chart 是要收費的版本,可在 ChatGpt 上做插件使用,如果免費想體驗,可以試用14天
將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)這一類型上的標準。