Docsify画图建模Mermaid插件支持

先上图

引入 Mermaid

head 中加入 css:

<link rel="stylesheet" href="//unpkg.com/mermaid/dist/mermaid.min.css" />

在 底部 引用 js:

<script type="text/javascript" src="//unpkg.com/mermaid/dist/mermaid.min.js"></script>

配置文件修改

window.$docsify = {
  // ...
  plugins: [
    function (hook, vm) {
      hook.ready(function () {
        mermaid.initialize({ startOnLoad: false });
      });
      hook.doneEach(function () {
        mermaid.init(undefined, '.mermaid');
      });
    }
  ],
  markdown: {
    renderer: {
      code: function (code, lang) {
        var html = '';
        if (code.match(/^sequenceDiagram/) || code.match(/^graph/) || code.match(/^gantt/)) {
          html = '<div class="mermaid">' + code + '</div>';
        }
        var hl = Prism.highlight(code, Prism.languages[lang] || Prism.languages.markup);
        return html + '<pre v-pre data-lang="' + lang + '"><code class="lang-' + lang + '">' + hl + '</code></pre>';
      }
    }
  }
};

解释一下,两个关键步骤:

markdown 代码解析器

markdown: {
  renderer: {
    code: function(code, lang) {
    var html = '';
    // 搜索 mermaid 代码
    if(code.match(/^sequenceDiagram/) || code.match(/^graph/) || code.match(/^gantt/)){
      // 生成一个 mermaid 图表的容器
      html = '<div class="mermaid">' + code + '</div>';
    }
    // 源码自带的 Prism 高亮插件
    var hl = Prism.highlight(code, Prism.languages[lang] || Prism.languages.markup)
    // 将图表的容器添加到代码之前
    return html + '<pre v-pre data-lang="' + lang + '"><code class="lang-' + lang + '">' + hl + '</code></pre>'
    }
  }
}

自定义插件

plugins: [
  function (hook, vm) {
    hook.ready(function () {
      // 类似 jQuery.ready 初始化 mermaid, 禁用自动渲染
      mermaid.initialize({ startOnLoad: false });
    });
    hook.doneEach(function () {
      // 每个页面渲染完成后手动渲染 mermaid 图表
      mermaid.init(undefined, '.mermaid');
    });
  }
];

最后再补一张甘特图:

在这里插入图片描述

Mermaid 支持:

  • 流程图
  • 序列图
  • 甘特图

而且语法结构非常简单,值得推荐.

其实,正文才刚刚开始.

流程图

开始/结束
开始/结束
过程
过程
输入/输出
输入/输出
判断
判断
连接线
A
B
自定义样式
Start
Stop
示例
校验失败
校验成功
开始
输入参数
判断参数合法性
结束
处理业务
子图
强调
校验失败
校验成功
判断参数合法性
输入参数
开始
结束
处理业务

时序图

参与者
客户端 接口服务器 数据库 客户端 接口服务器 数据库
消息
消息格式
[参与者][箭头][参与者]:消息内容

支持的箭头有:

类型说明
->无箭头实线
–>无箭头虚线
->>箭头实线
–>>箭头虚线
-x箭头实线带 x(异步)
–x箭头虚线带 x(异步)
Alice John Hello John, how are you? Great! Alice John
激活

+/- 符号

Alice John Hello John, how are you? John, can yoy hear me? Hi Alice, I can hear you! I feel great! Alice John

甘特图

Mon 06 Mon 13 Mon 20 Completed task Active task Future task Future task2 Completed task in the critical line Implement parser and jison Create tests for parser Future task in critical line Create tests for renderer Add to mermaid Describe gantt syntax Add gantt diagram to demo page Add another diagram to demo page Describe gantt syntax Add gantt diagram to demo page Add another diagram to demo page A section Critical tasks Documentation Last section Adding GANTT diagram functionality to mermaid

在线编辑器

https://knsv.github.io/mermaid/live_editor/

### 关于 Mermaid 插件的使用说明 Mermaid 是一种基于 JavaScript 的工具,能够通过简单的文本描述生成各种类型的图表,例如流程图、时序图、甘特图等。以下是有关如何在不同环境中安装和使用 Mermaid 插件的具体指导。 #### 在 VS Code 中安装并使用 Mermaid 插件 为了在 Visual Studio Code (VS Code) 中使用 Mermaid 绘制图表,需完成以下操作: 1. **安装插件** 打开 VS Code 并进入扩展市场,搜索 `Markdown Preview Mermaid Support` 插件并安装它[^1]。此插件允许你在 Markdown 文件中嵌入 Mermaid 语法,并能在预览模式下显示图表。 2. **创建 Markdown 文件** 新建一个 `.md` 文件(如 `test.md`),并在其中编写 Mermaid 语法来定义图表结构。例如: ```mermaid graph LR; A-->B; A-->C; B-->D; C-->D; ``` 3. **启用预览功能** 使用快捷键或点击右上角的“预览”按钮激活 Markdown 预览窗口。此时,Mermaid 图表应能正常渲染并显示出来。 --- #### Typora 中配置 Mermaid 支持 对于喜欢简洁界面的用户来说,Typora 是一款优秀的 Markdown 编辑器,同样支持 Mermaid 图表绘制: - 安装最新版本的 Typora 后,默认已内置对 Mermaid支持[^2]。 - 用户只需确保启用了相关选项即可直接书写 Mermaid 代码片段,在编辑过程中即时呈现效果。 --- #### Grafana 中集成 Mermaid 图表 Grafana 提供了一种可视化方式用于分析时间序列数据,而借助第三方开发的插件也可以实现更复杂的业务逻辑表达——比如利用 Mermaid 展现系统架构或者工作流细节: - 访问 [Grafana Plugins](https://grafana.com/grafana/plugins/) 页面查找名为 `jdbranham-diagram-panel` 的组件[^3]; - 按照文档指引将其部署至您的实例环境当中之后便可以在仪表盘里添加新的面板类型从而导入预先准备好的 mermaid script 来构建自定义图形化视图。 --- ```python # 示例 Python 脚本演示如何动态生成 Mermaid 输入字符串 def generate_mermaid_code(nodes, edges): result = 'graph TD;\n' for node in nodes: result += f' {node};\n' for edge in edges: start, end = edge.split('-') result += f' {start} --> {end};\n' return result.strip() nodes_list = ['A', 'B', 'C'] edges_list = ['A-B', 'A-C', 'B-D'] print(generate_mermaid_code(nodes_list, edges_list)) ``` 上述脚本可以根据给定节点列表与边关系来自动生成兼容格式化的 mermaid source code. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Willin 老王躺平不摆烂

感谢你这么好看还这么慷慨

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值