Mermaid.js使用markdown语法生成时序图(各种工程类图)


1.项目中需要实现一个流程图样式的界面,目前找了下,发现了Mermaid(美人鱼)可以直接使用markDown语法实现



mermaid.js文档地址:https://mermaid.nodejs.cn/intro/

Mermaid.js 的核心特点是:

  • 文本驱动:通过简单的文本描述生成图表。

  • 易于集成:可以轻松集成到网页、Markdown 文档或其他支持 JavaScript 的环境中。

  • 支持多种图表类型:包括流程图、序列图、甘特图、类图、状态图、饼图等。

  • 高度可定制:支持主题、样式和配置的灵活调整。


要想使用Mermaid.js完成前端图类的渲染(流程图)需要注意

一,引入Mermaid.js

<script src="../../../lib/mermaid-11.4.1/package/dist/mermaid.min.js"></script>


A2.初始化标签

  • 要在标签中:使用 class=“mermaid”
  • 标签内容就是markDown的流程图生成语法
    <div id="mermaidT" class="mermaid" style="background-color: #3cc6d3;text-align: center;">

        flowchart BT


    </div>



案列
页面效果:
在这里插入图片描述


html代码:
 <div id="mermaidT" class="mermaid" style="background-color: #3cc6d3;text-align: center;">
        ---
        config:
          theme: base
          themeVariables:
            primaryColor: "#2d6fb8"
        ---
                flowchart TD 
                test1["`
                名称:测试
                版本:1.1
                `"]
                style test1 fill:#00ff00
        
        
                test2["`
                名称:测试02
                版本:1.0
                `"]
                style test2 fill:#00ff00
        
                test3["`
                名称:测试02
                版本:1.0
                `"]
                style test2 fill:#00ff00
        
        
                test1 --> test2
                
                test1 --> test3
        
                test2 --> test3
        
                test4["`
                名称:测试04
                版本:1.0
                `"]
                style test2 fill:#00ff00
        
                test5["`
                名称:测试05
                版本:1.0
                `"]
                style test2 fill:#00ff00
        
        
        
                test4 --> test5
        
                class test1 cssClass
                //指定点击事件,事件方法提前定义在js中,在渲染时,通过下方的代码指定一下点击事件就可以
                //目前没有对这块进行应用.如果要复杂的操作需要参考其他文档
                click test1 call aaa(test1) "这是一段鼠标悬浮的提示"
    </div>

1.markDown语法

简要介绍一下:直接在标签中写入相应的字符串就可以了

<body>
    <div class="mermaid">
        flowchart TD
            A[开始] --> B[结束]
    </div>
</body>


二,标签中写入markDown语法

具体语法可以参考最上方的官方文档,文档中有详细的语法介绍和显示
这里只简单介绍
mermaid.js文档地址:https://mermaid.nodejs.cn/intro/

  • 这一段是配置:可以使用js初始化完成 也可以使用字符串直接定义
       ---
        config:
          theme: base
          themeVariables:
            primaryColor: "#2d6fb8"
        ---


  • 语法简要说明
        flowchart BT     //flowchart  表示要显示的留图类型,BT表示图块节点之间的方向,BT是从上往下的,TD好像是从下往上
		
		//定义一个图中的节点 test1是节点块的ID,可以看作是一个主键
		//中括号对象,表示页面显示的节点块的内容
        test1["`
        名称:测试
        版本:1.1
        `"]
        //style 单独定义次节点的css样式
        //下面的test1就是通过上方定义的"ID"来配置节点的
        style test1 fill:#00ff00

        test2["`
        名称:测试02
        版本:1.0
        `"]
        style test2 fill:#00ff00

		//使用节点1(test1 ) 通过符号指向 节点2(test12)
		//这样就可以使两个节点进行连接
        test1 --> test2

三,初始化相关配置

如果正式运用到项目中的话,markDown生成的图语法应该是动态生成,这就需要运用官方提供初始化API等相关配置


配置好对应div标签后,在js中使用mermaid.initialize,这相当于一个全局配置

        //初始化启动
        //
        window.onload = mermaid.initialize({
            theme: "base", //需要使用 base 主题,因为它是唯一可修改的主题。
            'themeVariables': {//配置CSS相关的样式
                'primaryColor': '#2d6fb8',
            },
            //startOnLoad这个属性,true的话,会自动调用,mermaid.run(),可以理解为一个init()  --并且init()方法在10.0版本前弃用了.高版本使用run()
            //正常配置的话,设置为false,在你js其他操作完成后,动态生成的markdown字符串语法也渲染到对应div时.你就可以在其他地方使用mermaid.run()渲染页面了
            //不然你设置为true,自己动态渲染的时候会不生效(可以参考官方文档)
            startOnLoad: false,//点击事件开启 true
            securityLevel: 'loose',//启动安全级别、支持点击事件
        });

 var init = function (str) {
            const mermaidDiv = document.getElementById('mermaidT');

          
            mermaidDiv.innerHTML += "\n" + str;

			//处理完后,调用run()开启渲染
            mermaid.run({
                querySelector: '.mermaid',
            });

        }

记录一下

对于这块内容;公司项目中我使用的解决方案是:

1.在后端生成对应的markDown语法的字符串
2.前端将字符串渲染到div中
3.配置好Mermaid的initialize(全局配置)
4.调用Mermaid.run()手动渲染

一些官方配置的截图,中文文档中有些内容也没翻译过来,自己找的时候还是要费点事件
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值