在Hexo 博客中优雅地集成 Mermaid 图表


在 Hexo 博客中优雅地集成 Mermaid 图表

在技术博客的创作过程中,纯文字的内容往往难以清晰展示业务流程、逻辑关系、项目进度与代码结构。而可视化图表能够直观呈现复杂内容,大幅提升文章的可读性与专业性。本文将详细讲解Hexo 博客集成 Mermaid 图表的完整实操方案,无需复杂绘图工具,仅通过简洁的文本语法,即可在 Markdown 中快速生成各类精美交互式图表。

一、什么是 Mermaid?

Mermaid 是一款轻量、高效的 JavaScript 图表绘制工具,核心优势是文本绘图。用户无需拖拽作图,只需编写简单易懂的类 Markdown 语法,就能自动渲染生成 SVG 格式的高清交互式图表。

其全面覆盖技术写作常用图表类型,包含:流程图、时序/序列图、甘特图、类图、状态图、饼图等,完美适配技术博客、文档笔记、项目复盘等各类场景,是技术创作者的必备工具。

二、Hexo 集成 Mermaid 完整方案

原生 Hexo 不支持 Mermaid 语法渲染,需要通过替换渲染插件、安装依赖、配置主题参数三步完成适配。以下为亲测可用、无冲突的完整部署步骤。

1. 安装 & 卸载依赖(解决渲染冲突)

Hexo 默认的 hexo-renderer-marked渲染器不兼容 Mermaid 语法,会导致图表无法渲染、代码乱码,因此需要替换为适配性更强的 markdown-it渲染器,并安装 Mermaid 专属标签插件。

推荐使用 pnpm 执行命令(速度快、依赖整洁):

# 安装适配Mermaid的渲染器与标签插件
pnpm install hexo-renderer-markdown-it hexo-tag-mermaid --save

# 卸载原生冲突渲染器(必做,否则渲染失效)
pnpm uninstall hexo-renderer-marked

2. 主题配置文件开启 Mermaid 支持

以主流的 matery 主题为例,修改主题配置文件 themes/hexo-theme-matery/_config.yml,新增或修改 Mermaid 全局配置,开启渲染功能并自定义图表样式:

mermaid: ## Mermaid官方仓库:https://github.com/knsv/mermaid
  enable: true  # 开启Mermaid渲染功能
  version: "latest" # 调用最新版本内核
  options:  # 全局图表样式配置
    theme: default # 默认主题,支持dark/neutral/base
    gantt: { axisFormat: '%Y-%m-%d' } # 甘特图日期格式
    sequence: { actorMargin: 50 } # 序列图角色间距

3. Hexo 主配置文件适配渲染规则

修改博客根目录的 _config.yml 主配置文件,配置 markdown-it 渲染规则,兼容Mermaid语法,同时保留丰富的Markdown拓展功能:

markdown:
  render:
    html: true
    xhtmlOut: false
    breaks: false
    linkify: true
    typographer: true
    quotes: '"""''
  plugins:
    - markdown-it-abbr
    - markdown-it-footnote
    - markdown-it-ins
    - markdown-it-sub
    - markdown-it-sup
  anchors:
    level: 2
    collisionSuffix: 'v'
    permalink: true
    permalinkClass: 'header-anchor'
    permalinkSide: 'left'
    permalinkSymbol: '#'
    case: 0
    separator: '-'

# Mermaid全局配置
mermaid:
  enable: true
  version: "latest"
  options:
    theme: default
    gantt: { axisFormat: '%Y-%m-%d' }
    sequence: { actorMargin: 50 }

配置完成后,执行 hexo clean && hexo g && hexo s 重启本地服务,即可生效Mermaid图表渲染功能。

三、常用 Mermaid 图表实战示例

以下整理了技术博客最常用的5类图表,代码可直接复制使用,无乱码、可正常渲染,适配上述配置环境。

1. 基础流程图

适用于业务流程、逻辑判断、操作步骤展示,支持横向(LR)、纵向(TD)布局。

纵向流程示例:

{% mermaid %}
graph TD
    A[开始] --> B{条件判断}
    B -->|是| C[执行操作A]
    B -->|否| D[执行操作B]
    C --> E[流程结束]
    D --> E
{% endmermaid %}

横向业务流程示例:

{% mermaid %}
graph LR
    程序启动 --> 接收用户数据
    接收用户数据 --> 格式验证
    格式验证 -->|验证通过| 业务逻辑处理
    格式验证 -->|验证失败| 返回错误提示
    业务逻辑处理 --> 数据持久化存储
    数据持久化存储 --> 流程结束
    返回错误提示 --> 流程结束
{% endmermaid %}

2. 序列图(时序图)

适用于展示前后端交互、多角色通信、接口请求流程,清晰呈现请求与响应时序关系。

{% mermaid %}
sequenceDiagram
    participant 客户端
    participant 服务端
    participant 数据库
    客户端 ->> 服务端: 发送业务请求
    服务端 ->> 数据库: 查询对应业务数据
    数据库 -->> 服务端: 返回查询结果
    服务端 -->> 客户端: 响应最终业务数据
{% endmermaid %}

3. 甘特图(项目进度图)

适用于项目管理、任务排期、进度复盘,直观展示各阶段任务时间与依赖关系。

{% mermaid %}
gantt
    dateFormat  YYYY-MM-DD
    title 项目开发整体进度规划
    section 需求设计阶段
    需求调研分析     :active, a1, 2023-01-01, 7d
    整体系统设计     :after a1, 10d
    section 代码开发阶段
    前端页面开发     :2023-01-18, 14d
    后端接口开发     :2023-01-18, 14d
    section 测试上线阶段
    单元功能测试     :after 前端页面开发, 7d
    整体集成测试     :after 单元功能测试, 7d
{% endmermaid %}

4. 类图(结构关系图)

适用于后端开发、程序设计,展示类的属性、方法以及继承、关联关系。

{% mermaid %}
classDiagram
    class 动物 {
        + String 名称
        + int 年龄
        + void 进食()
        + void 移动()
    }
    
    class 狗狗 {
        + String 品种
        + void 吠叫()
    }
    
    狗狗 --|> 动物
{% endmermaid %}

5. 状态图

适用于展示业务状态流转、审核流程、任务生命周期等状态切换逻辑。

{% mermaid %}
stateDiagram-v2
    [*] --> 待审核
    待审核 --> 审核中: 提交申请
    审核中 --> 审核通过: 校验合规
    审核中 --> 审核驳回: 校验异常
    审核通过 --> 执行中: 启动任务
    执行中 --> 任务完成: 流程执行完毕
    审核驳回 --> 待审核: 修改后重新提交
    任务完成 --> [*]
{% endmermaid %}

四、总结

完成以上配置后,你的 Hexo 博客即可完美支持 Mermaid 全类型图表渲染。相较于传统的截图、外链图片绘图方式,Mermaid 基于文本编写,可编辑、可复用、高清无失真,极大提升了技术博客的写作效率和内容专业性。

后续写作中,无论是梳理业务流程、讲解代码结构,还是复盘项目进度,都可以直接使用 Mermaid 语法快速生成可视化图表,让博客内容更清晰、更具质感。

(注:文档部分内容可能由 AI 生成)


文章作者: 摸鱼
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 摸鱼 !
  目录