ToolAct工具行動

Mermaid 線上編輯器

輸入內容
轉換結果

等待輸入

行數: 6字元數: 108
等待輸入縮放: 100%

什麼是 Mermaid 圖表編輯器?

Mermaid 是一款基於 JavaScript 的圖表繪製工具,它使用類似 Markdown 的文字語法來產生各種圖表。無需手動拖曳圖形,只需編寫簡單的文字描述,即可自動產生精美的流程圖、時序圖、類別圖等。本工具提供線上 Mermaid 編輯環境,支援即時預覽、拖曳縮放和匯出功能,幫助開發者快速建立和分享圖表。 用於正式資料或真實程式碼庫時,仍應結合解析器、測試結果和專案規範再次確認。

如何使用

如何使用

  1. 在左側編輯器輸入 Mermaid 語法
  2. 右側面板即時渲染圖表
  3. 使用滑鼠拖曳、滾輪縮放
  4. 點選匯出按鈕儲存為 PNG 或 SVG

圖表檢查

  • 每完成一段重要的修改就重新渲染;Mermaid 錯誤通常來自縮排不正確、標點未轉義或所選圖表類型不支援的語法。
  • 匯出前確認標籤、箭頭和換行在圖表實際使用尺寸下仍然清晰可讀。

使用場景

從 Mermaid 程式碼繪製圖表在左側編輯 Mermaid 語法,右側透過 Mermaid 函式庫進行防抖的即時渲染。內建範例涵蓋流程圖、時序圖、類別圖、狀態圖、ER 圖、甘特圖、圓餅圖、心智圖和使用者旅程圖。同一段程式碼可以直接貼到 README、Wiki 或 GitHub Issue 中,宿主渲染器會自行繪製圖表。
透過平移、縮放和全螢幕檢視大型圖表預覽面板支援滑鼠拖曳、滾輪縮放(10% 至 500%)、雙擊重置和全螢幕模式(狀態會記憶在 localStorage 中)。這讓複雜的架構圖或流程圖比靜態預覽更容易檢查。在截圖前放大密集區域,往往是保持箭頭標籤在擁擠流程圖中清晰可讀的唯一方法。
匯出圖表用於文件圖表渲染成功後,可匯出為可編輯的 SVG 向量格式,或透過 Canvas 渲染的白底 PNG。語法錯誤會顯示在預覽區域,方便在貼入 README、簡報或工單前修正。PNG 適合簡報和純圖片管道,SVG 則保留連結和樣式的可編輯性,方便設計交接。
為利害關係人截圖調整主題和方向截圖前可切換主題(default、dark、forest、neutral)和 TD/LR/BT/RL 圖表方向,讓同一張圖在淺色文件和深色儀表板中都能清楚呈現。活躍的 themeVariables 也可用來覆寫 fontFamily、primaryColor 和邊線顏色以符合品牌風格。主題變更後雙擊可重置縮放,確保新配色被完整擷取。
在流程圖、時序圖、ER 圖、甘特圖等語法間切換根據要回答的問題選擇合適的圖表類型:流程圖(graph TD)用於分支決策,sequenceDiagram 用於時序呼叫,erDiagram 用於實體關聯建模,gantt 用於專案排程。Mermaid 語法 v10(及後續 v11)變更了若干預設值——classDef 現在要在頂部宣告、subgraph 需要 id、甘特圖使用 ISO 日期格式——因此舊版程式碼片段可能需要小幅修改才能重新渲染。

技術原理

Mermaid 是由 Knut Sveidqvist 於 2014 年發起的開源圖表渲染函式庫。其核心概念是接收人類可讀的 DSL(領域特定語言),透過解析器將其轉換為 SVG 圖形。完整管線分為三個步驟:詞法/解析器(由 jison 產生)將來源解析為內部資料結構;針對圖表類型的佈局演算法計算節點和邊的座標;最後由 d3 將佈局渲染為 SVG 元素。 不同的圖表使用不同的佈局引擎:流程圖預設使用 dagre(分層有向圖佈局),從 v10 起也支援 ELK(更強大但更重);時序圖使用自訂的時序佈局,將參與者水平排列並將訊息垂直堆疊;甘特圖在時間軸上手動排佈任務並處理依賴關係;類別圖和狀態圖同樣依賴 dagre。佈局演算法決定了可讀性——dagre 遵循 Sugiyama 框架進行等級分配、邊交叉最小化和間距收緊,對一般規模的流程圖效果良好。 與 Graphviz 相比,Mermaid 的語法更接近自然語言(例如 A --> B),在瀏覽器中原生渲染並支援即時預覽。Graphviz 的 DOT 語法更底層,其佈局引擎(fdp、neato 等)更成熟,但需要本地安裝且預設樣式較為過時。Mermaid 目前支援超過 15 種圖表類型——流程圖、時序圖、類別圖、狀態圖、ER 圖、甘特圖、圓餅圖、使用者旅程圖、Git 圖、心智圖、時間軸、象限圖、桑基圖、xychart、區塊圖等——涵蓋絕大多數軟體工程繪圖需求。

  • 解析:由 jison 產生的解析器將 DSL 文字轉換為內部 AST;每種圖表類型有自己的語法檔。
  • 佈局演算法:流程圖使用 dagre 進行分層有向圖佈局,可切換為 ELK;時序圖和甘特圖使用各自的專用佈局邏輯。
  • 渲染引擎:使用 d3 繪製 SVG;節點使用 g/rect/path/text 元素,箭頭由 marker 定義。
  • 圖表類型:支援流程圖、時序圖、類別圖、狀態圖、ER 圖、甘特圖、圓餅圖、使用者旅程圖、Git 圖、心智圖等十餘種。
  • 與 Graphviz 比較:Mermaid 語法更友善且原生支援 Web;Graphviz 佈局更精細,適合大型複雜圖表。
  • 主題切換:透過 themeVariables 設定或 init 指令,可在 default、dark、forest、neutral 等內建主題之間切換。

範例

流程圖

flowchart TD
    A[開始] --> B{已登入?}
    B -- 是 --> C[首頁]
    B -- 否 --> D[登入頁]
    D --> E[輸入帳密]
    E --> C
    C --> F[結束]

循序圖

sequenceDiagram
    participant Browser
    participant Server
    participant Database
    Browser->>Server: GET /api/user
    Server->>Database: SELECT * FROM users
    Database-->>Server: 使用者資料
    Server-->>Browser: JSON 回應

甘特圖

gantt
    title 專案計畫
    dateFormat YYYY-MM-DD
    section 設計
    需求分析 :a1, 2026-06-01, 7d
    UI 設計    :a2, after a1, 10d
    section 開發
    前端  :b1, after a2, 20d
    後端   :b2, after a2, 18d
    section 測試
    整合測試 :c1, after b1, 7d

常見問題

Mermaid 支援哪些圖表類型?

Mermaid 涵蓋流程圖、循序圖、類別圖、狀態圖、ER 圖、甘特圖、圓餅圖、使用者旅程圖、Git 圖、心智圖和象限圖。程式碼第一行宣告類型(例如 'flowchart TD' 或 'sequenceDiagram')。

為什麼我的圖表顯示語法錯誤?

最常見的原因有:缺少分號或箭頭運算子、節點標籤的括號不對稱(含特殊字元時請用引號包起來:A["Hello (world)"])、用錯該圖表類型的箭頭語法(流程圖用 -->、循序圖用 ->>),以及子圖的縮排問題。錯誤面板通常會指出解析停在哪一行。

怎麼把圖表匯出成圖片?

用匯出按鈕存成 SVG(向量、可縮放,建議用於簡報和文件)或 PNG(點陣,適合聊天和電子郵件)。如果想直接嵌入 HTML 或在 Figma、Illustrator 中再編輯,可以複製 SVG 標記。

可以自訂顏色和樣式嗎?

可以。用 'classDef' 定義類似 CSS 的樣式,再用 'class A,B,C myStyle' 套用。一次性的覆寫可以用行內語法,例如 'style A fill:#f9f,stroke:#333'。全域主題就在第一行加 %%{init: {'theme':'forest'}}%%——內建主題有 default、forest、dark、neutral 和 base。

有長度或複雜度限制嗎?

Mermaid 渲染數百個節點都沒問題,但超過之後排版時間會非線性成長。如果圖表變慢或難以閱讀,可以拆成多張連結圖表,或用子圖把相關節點分組;連線太多互相交叉時,自動排版就會挑出比較差的位置。

如何替節點加入超連結或點選處理?

用 'click NodeId "https://example.com"' 把節點變成連結,或用 'click NodeId callback "tooltip"' 觸發透過 mermaid.parseError 註冊的 JavaScript 回呼。匯出的 SVG 中連結也能用,前提是嵌入頁面沒有把它移除。

還有哪裡可以渲染同樣的 Mermaid 程式碼?

GitHub Markdown、GitLab、Notion、Obsidian、Typora、VS Code(搭配擴充)以及多數現代文件工具都能原生渲染 Mermaid 程式碼區塊。把同樣的程式碼貼過去,會以該平台選用的主題渲染。