開源工具利器:Mermaid助力知識圖譜可視化與分享

在現代 web 開發中,可視化工具對于展示流程、結構和數據關系至關重要。Mermaid 是一款強大的 JavaScript 工具,它使用基于 Markdown 的語法來呈現可定制的圖表、圖表和可視化。對于展示流程、結構和數據關系至關重要。通過簡單的文本描述,你可以輕松創建流程圖、思維導圖、序列圖等多種圖表類型。本文將帶你了解 Mermaid 的核心功能,并展示如何在 Vue 3 項目中集成和使用它。
在這里插入圖片描述

本博文旨在幫助初學者快速掌握開發技能,同時解決在學習和實踐過程中可能遇到的常見問題,如舊版代碼兼容性問題和錯誤配置等。博文將兼顧基礎知識的講解和實用技巧的應用,確保讀者能夠順利上手并提高開發效率。2025版最新避坑文章

一、Mermaid 簡介

Mermaid 是一款開源工具,使用 MIT 協議授權。它支持多種圖表類型,包括但不限于:

  • 流程圖(flowchart)
  • 序列圖(sequence diagram)
  • 甘特圖(gantt)
  • 類圖(class diagram)
  • Git 圖(git graph)
  • 思維導圖(mindmap)
  • 數據包圖(packet diagram)
  • ER 圖(er diagram)
  • 餅圖(pie chart)
  • 象限圖(quadrant chart)
  • 需求圖(requirement diagram)

你可以通過修改圖的描述來重新呈現或修改圖。這種基于文本的圖表定義方式,使得圖表的維護和版本控制變得更加容易。

二、集成 Mermaid

CDN 引入

最簡單的方式是通過 CDN 引入 Mermaid。jsDelivr 提供了 Mermaid 的 CDN 服務,你可以通過以下鏈接引入:

<script type="module">import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
</script>

你也可以通過右上角的下拉框切換版本,以適應你的項目需求。

npm 安裝

對于需要離線使用或更穩定依賴的項目,可以通過 npm 安裝 Mermaid:

npm install mermaid
# 或
yarn add mermaid
# 或
pnpm add mermaid

安裝完成后,你可以在項目中通過 import 引入 Mermaid。

三、Vue 3 中的集成示例

以下是一個在 Vue 3 項目中使用 Mermaid 的完整示例,采用 setup 語法:

<template><div className="mermaid-container"><pre className="mermaid" ref="mermaidRef"></pre></div>
</template><script setup>
import {ref, onMounted, nextTick} from 'vue';
import mermaid from 'mermaid';
const mermaidRef = ref(null);const mermaidCode = `
flowchart TDA[開始] --> B[步驟 1]B --> C[步驟 2]C --> D[結束]
`;onMounted(async () => {// 初始化 mermaid 配置mermaid.initialize({startOnLoad: false, // 禁用自動渲染,手動控制securityLevel: 'loose', // 啟用點擊事件和 HTML 標簽});// 確保 DOM 已經更新await nextTick();// 將 mermaid 代碼設置到 pre 標簽中if (mermaidRef.value) {mermaidRef.value.textContent = mermaidCode;}// 手動渲染 mermaid 圖表await mermaid.run({querySelector: '.mermaid',});
});
</script><style>
.mermaid-container {width: 100%;height: 400px;display: flex;justify-content: center;align-items: center;
}pre.mermaid {font-family: 'trebuchet ms', verdana, arial;width: 100%;height: 100%;
}
</style>

運行效果:
在這里插入圖片描述

代碼說明

  1. 模板部分:定義了一個容器 div 和一個 pre 標簽,pre 標簽的類名是 mermaid,這是 Mermaid 識別圖表定義的關鍵。

  2. 腳本部分

    • 引入了 Mermaid 的 ESM 模塊。
    • 定義了一個 ref 來引用 pre 標簽。
    • 在 onMounted 生命周期鉤子中,初始化 Mermaid 配置,并在 DOM 更新后設置 pre 標簽的內容,最后手動渲染圖表。
  3. 樣式部分:為容器和 pre 標簽設置了基本的樣式,確保圖表能夠正確顯示。

四、配置與高級用法

安全配置

Mermaid 提供了 securityLevel 配置項,用于設置已解析圖表的信任級別:

  • ‘strict’(默認):對文本中的 HTML 標記進行編碼,并禁用單擊功能。
  • ‘antiscript’:允許在文本中使用 HTML 標記(僅刪除腳本元素),并啟用單擊功能。
  • ‘loose’:允許在文本中使用 HTML 標記,并啟用單擊功能。
  • ‘sandbox’:使用沙盒化 iframe 渲染,阻止 JavaScript 運行。

你可以通過 mermaid.initialize 方法設置 securityLevel:

mermaid.initialize({securityLevel: 'loose',
});

高級渲染控制

除了默認的自動渲染,你還可以使用 mermaid.run 方法進行更復雜的渲染控制:

mermaid.initialize({ startOnLoad: false });await mermaid.run({querySelector: '.someOtherClass', // 渲染特定類名的元素
});await mermaid.run({nodes: [document.getElementById('someId'), document.getElementById('anotherId')], // 渲染特定節點
});await mermaid.run({suppressErrors: true, // 抑制錯誤
});

API 使用

Mermaid 提供了豐富的 API,例如:

  • render:使用圖形定義作為字符串來渲染圖形。
  • detectType:確定給定文本中存在的圖表類型。
  • parse:在不呈現圖形的情況下驗證圖形定義。

五、總結

通過本文,你已經了解了如何在 Vue 3 項目中集成 Mermaid,并利用其強大的圖表生成功能。Mermaid 的簡潔語法和豐富功能使其成為 web 開發中不可或缺的可視化工具。無論是簡單的流程圖還是復雜的序列圖,Mermaid 都能輕松應對,為你的項目增添專業性和可視化魅力。

相關鏈接:
https://mermaid.js.org/config/usage.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72443.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72443.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72443.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C# --- LINQ

C# --- LINQ 什么是LINQFluent Syntax 和 SQL-Like QueryLINQ Operations 什么是LINQ LINQ的全稱為Language Integrated Query, 為各種查詢(包括對象查詢&#xff0c;數據庫查詢&#xff0c;XML查詢) 提供了統一模型.LINQ源于SQL&#xff0c;但比SQL更加強大&#xff0c;更加靈…

【AI News | 20250316】每日AI進展

AI Repos 1、ReActMCP 將網絡搜索能力集成到AI助手中的一個MCP服務&#xff1a;ReActMCP Web Search&#xff0c;相當于給AI裝了個搜索引擎&#xff0c;可以實時查找最新的內容。它基于Exa API執行基本和高級網絡搜索&#xff0c;高級搜索比如限制搜索的網站范圍、指定日期范圍…

【VUE】day04-組件的生命周期、組件之間的數據共享、ref引用、購物車案例

【VUE】day04-組件的生命周期、組件之間的數據共享、ref引用、購物車案例 1. 組件之間的關系2. 使用組件的三個步驟3. vue.components全局注冊組件4. 自動生成右邊標簽插件5. 組件的props6. 結合v-bind使用自定義屬性7. props的默認default值8. type值類型9. 組件之間的樣式沖突…

Redis分布式鎖深度剖析:從原理到Redisson實戰,破解腦裂與高并發鎖難題

一、&#x1f4cc; 分布式鎖的核心應用場景 場景類型典型案例風險說明&#x1f680; 高并發場景電商秒殺、票務搶購庫存超賣風險? 定時任務場景集群日志清理、數據統計任務重復執行&#x1f504; 冪等場景支付接口重試、訂單創建資金重復扣款 二、&#x1f527; Redis分布式鎖…

量化交易學習筆記02:雙均線策略

雙均線策略示例 個股&#xff1a;中國平安 回測日期&#xff1a;2022-5-1至2023-5-1 短均線&#xff1a;5天 長無線&#xff1a;10天 代碼&#xff1a; def initialize(context):# 初始化此策略# 設置我們要操作的股票池, 這里我們只操作一支股票# """標的&qu…

交換機控制軟件的實現步驟猜測

一、主要目的 提出對交換機軟件控制邏輯的猜測。 二、交換機控制軟件的組成 (一)背景 1、交換機有很多的RJ45水晶頭端口。 2、每個端口支持同時發送和接收字節數據。 3、每個端口接收的數據需要查表后才能轉發給目標端口。 (二)端口狀態掃描線程 負責掃描每個端口的狀態&#x…

Part1:基于國內源完成Kubernetes集群部署

集群規劃 操作系統&#xff1a;CentOS7 內核版本&#xff1a;5.4&#xff08;需升級&#xff09; 組件版本說明操作系統內核5.4RPM方式升級docker26.1.4yum安裝cri-docker0.3.16二進制安裝kubeadm1.30.11yum安裝kubealet1.30.11yum安裝kubectl1.30.11yum安裝kubectl1.30.11yu…

中考英語之10難點單詞

A abandon ~動詞&#xff0c;意為 “拋棄&#xff1b;放棄”。 ~例如 He abandoned his old bike by the roadside.&#xff08;他把他的舊自行車扔在路邊。&#xff09; absolute ~形容詞&#xff0c;“絕對的&#xff1b;完全的”。 ~例如 We have absolute trust in him…

【GPT入門】第24課 langfuse介紹

【GPT入門】第24課 langfuse介紹 1. langfuse概念與作用2. 代碼3. 頁面效果4. 設計模式1. 裝飾器模式2. 上下文管理模式1. langfuse概念與作用 Langfuse是一款專為大規模語言模型(LLM)應用開發設計的開源平臺。其作用主要包括以下幾個方面: 提升開發效率:通過消除LLM應用構…

在 React 中使用 Web Components 的實踐操作

前言 在現代前端開發中&#xff0c;React 和 Web Components 都是廣泛使用且備受歡迎的技術。React 是一個用于構建用戶界面的 JavaScript 庫&#xff0c;提供了組件化的開發方式和高效的狀態管理&#xff0c;而 Web Components 是一套原生的瀏覽器技術標準&#xff0c;允許開…

C++單例模式精解

單例模式&#xff08;重點*&#xff09; 單例模式是23種常用設計模式中最簡單的設計模式之一&#xff0c;它提供了一種創建對象的方式&#xff0c;確保只有單個對象被創建。這個設計模式主要目的是想在整個系統中只能出現類的一個實例&#xff0c;即一個類只有一個對象。 將單…

【微服務】java中http調用組件深入實戰詳解

目錄 一、前言 二、http調用概述 2.1 什么是http調用 2.1.1 http調用步驟 2.2 HTTP調用特點 2.3 HTTP調用應用場景 三、微服務場景下http調用概述 3.1 微服務開發中http調用場景 3.2 微服務組件中http的應用 四、常用的http調用組件 4.1 java中常用的http組件介紹 4…

Implementing SAP BPC Embedded - 2nd Edition

Implementing SAP BPC Embedded - 2nd Edition

stm32第四天控制蜂鳴器

一&#xff1a; 1.蜂鳴器的種類 蜂鳴器是一種常用的電子發聲元器件&#xff0c;采用直流電壓供電。廣泛應用于計算機&#xff0c;打ED機&#xff0c;報警器&#xff0c;電子玩具&#xff0c;汽車電子設備燈等產品中常見的蜂鳴器可分為有源蜂鳴器和無源蜂鳴器。 2.蜂鳴器的控制…

Swift 中 associatedtype 的用法詳解

目錄 前言 1.什么是associatedtype 2.associatedtype 的作用 1.讓協議支持泛型 2.讓協議支持不同的數據類型 3.結合 where 關鍵字限制類型 4.什么時候使用 associatedtype 5.總結 前言 在 Swift 語言中&#xff0c;泛型&#xff08;Generics&#xff09;是一個非常強大…

每日Attention學習26——Dynamic Weighted Feature Fusion

模塊出處 [ACM MM 23] [link] [code] Efficient Parallel Multi-Scale Detail and Semantic Encoding Network for Lightweight Semantic Segmentation 模塊名稱 Dynamic Weighted Feature Fusion (DWFF) 模塊作用 雙級特征融合 模塊結構 模塊思想 我們提出了 DWFF 策略&am…

OpenCV實現圖像特征提取與匹配

?一、特征檢測與描述子提取? ?選擇特征檢測器? 常用算法包括&#xff1a; ?ORB?&#xff1a;一種高效的替代SIFT和SURF的算法&#xff0c;主要用于移動機器人和增強現實等領域。適合實時應用&#xff0c;結合FAST關鍵點與BRIEF描述子?。?SIFT&#xff08;尺度不變特征變…

向量檢索在AI中的應用與技術解析

關鍵要點 向量檢索在AI中用于信息檢索、推薦系統和圖像搜索&#xff0c;研究表明其通過高維空間中的向量表示數據來提升搜索相關性。它依賴于嵌入技術&#xff08;如Word2Vec、BERT&#xff09;和近鄰算法&#xff08;如kNN、ANN&#xff09;&#xff0c;證據傾向于其在處理大…

事務與異步方法(@Async)協同工作

目錄 1. 問題場景與風險 &#xff08;1&#xff09;典型場景 &#xff08;2&#xff09;風險分析 2. 解決方案&#xff1a;事務提交后觸發異步操作 &#xff08;1&#xff09;代碼示例 &#xff08;2&#xff09;關鍵注解 3. 原理解析 &#xff08;1&#xff09;事務同…

關于進程的實驗(子進程和父進程相關的)

文章目錄 1.第一個問題2.第二個問題3.第三個問題 1.第一個問題 編寫一段程序&#xff0c;利用系統調用fork( )創建兩個進程。當此程序運行時&#xff0c;在系統中有一個父進程和兩個子進程活動。讓每一個進程在屏幕上顯示一個字符&#xff1a;父進程顯示字符“a”;子進程分別顯…