先上图

引入 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/

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐