Mermaid 图表
ModernDuang 内置 Mermaid 支持,你可以直接在 Markdown 文章中绘制流程图、时序图、甘特图等多种图表。Mermaid 使用简单的文本语法描述图表,无需借助外部绘图工具。
启用 Mermaid
Mermaid 图表默认不会在每篇文章中加载(避免不必要的网络请求)。需要在文章的 Front Matter 中显式开启:
延迟加载策略
ModernDuang 对 Mermaid 采用延迟加载(Lazy Loading)策略:
- 构建时:不加载 Mermaid JS 库,页面 HTML 中包含原始的
<pre><code class="mermaid">代码块。 - 运行时:仅当文章 Front Matter 中
mermaid: true时,页面才动态加载 Mermaid JS 库。 - 加载完成后:Mermaid 自动扫描页面中的
.mermaid代码块并渲染为 SVG 图表。
这个策略的好处:
- 不需要图表的文章零额外 JS 开销
- Mermaid JS 库(约 500KB+ gzip 后约 120KB)仅在需要时加载
- 避免全局引入导致的页面性能下降
基本用法
在文章中以 Markdown 围栏代码块形式编写 Mermaid 语法,语言标记为 mermaid:
渲染结果为一个自上而下的流程图。
使用 Hexo 标签语法
除了围栏代码块,ModernDuang 还支持使用 Hexo 标签语法 嵌入 Mermaid 图表:
两种语法等效,渲染结果完全相同。标签语法在某些场景下更灵活(例如图表内容包含特殊字符时),你可以根据个人偏好选择使用。无论使用哪种语法,都需要在 Front Matter 中设置 mermaid: true。
支持的图表类型
Mermaid 支持多种图表类型,以下是在 ModernDuang 中经过测试验证的类型:
流程图(Flowchart / Graph)
时序图(Sequence Diagram)
甘特图(Gantt Chart)
类图(Class Diagram)
状态图(State Diagram)
饼图(Pie Chart)
ER 图(Entity Relationship Diagram)
暗色模式兼容
Mermaid 图表在暗色模式下会自动适配配色。ModernDuang 通过检测当前的 data-theme 属性,动态调整 Mermaid 的主题:
- 亮色模式:Mermaid 使用
default主题(浅色背景、深色文字) - 暗色模式:Mermaid 使用
dark主题(深色背景、浅色文字)
主题切换是实时的——当你点击页面上的主题切换按钮时,已渲染的 Mermaid 图表会重新渲染以适应新的配色方案。无需手动干预。
文章 Front Matter 示例
以下是一篇启用了 Mermaid 图表的完整文章 Front Matter:
常见问题
图表渲染失败?
- 检查 Front Matter 中是否有
mermaid: true - 检查 Mermaid 语法是否正确(可在 Mermaid Live Editor 中先行验证)
- 检查浏览器控制台是否有 JS 错误
- 确保 Mermaid JS 库 CDN 可访问
图表太大超出页面?
Mermaid 渲染的 SVG 图表会自动适应容器宽度。如果图表内容过多导致溢出,可以在 Mermaid 中使用换行或调整节点文字长度。
可以在摘要/列表页显示 Mermaid 图表吗?
不建议在文章摘要中嵌入 Mermaid 图表。因为摘要通常截取文章前几百字符,且摘要区域不会加载 Mermaid JS 库,图表代码可能会显示为原始文本。
