mermaid - markdown的mermaid语法解析渲染

mermaid

概述

作用: 用于解析渲染markdown中的mermaid语法

Github: https://github.com/mermaid-js/mermaid

npm: https://www.npmjs.com/package/mermaid

官方文档: https://mermaid-js.github.io/mermaid/#/

接口文档: https://mermaid-js.github.io/mermaid/#/Setup?id=mermaidapi

使用

在这里插入图片描述

方式1 - 数据已经写死在HTML页面中 - initialize
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="G:\VsCode\开源\jquery-3.6.1.min.js"></script>
    <script src="G:\VsCode\开源\mermaid-9.1.7\dist\mermaid.min.js"></script>
    <script>
        mermaid.initialize({ 
            startOnLoad: 'true',
            flowchart:{ htmlLabels: true },
            "theme": "forest",
        }); 
    </script>
</head>
<body>

<div class="mermaid" id="mermaid1">
    erDiagram
        CUSTOMER }|..|{ DELIVERY-ADDRESS : has
        CUSTOMER ||--o{ ORDER : places
        CUSTOMER ||--o{ INVOICE : "liable for"
        DELIVERY-ADDRESS ||--o{ ORDER : receives
        INVOICE ||--|{ ORDER : covers
        ORDER ||--|{ ORDER-ITEM : includes
        PRODUCT-CATEGORY ||--|{ PRODUCT : contains
        PRODUCT ||--o{ ORDER-ITEM : "ordered in"
</div>


<div class="mermaid" id="mermaid2">
    graph TD 
    A[Client] --> B[Load Balancer] 
    B --> C[Server01] 
    B --> D[Server02]
</div>

</body>

</html>

在这里插入图片描述

方式2 - 动态渲染(例如从后端拿到数据在进行页面渲染)- render
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="G:\VsCode\开源\jquery-3.6.1.min.js"></script>
    <script src="G:\VsCode\开源\mermaid-9.1.7\dist\mermaid.min.js"></script>
    <script>
        mermaid.initialize({
            startOnLoad: 'true',
            flowchart: {
                htmlLabels: true
            },
            "theme": "forest",
        });
    </script>
</head>

<body>

    <div class="mermaid" id="mermaid1">
        erDiagram
        CUSTOMER }|..|{ DELIVERY-ADDRESS : has
        CUSTOMER ||--o{ ORDER : places
        CUSTOMER ||--o{ INVOICE : "liable for"
        DELIVERY-ADDRESS ||--o{ ORDER : receives
        INVOICE ||--|{ ORDER : covers
        ORDER ||--|{ ORDER-ITEM : includes
        PRODUCT-CATEGORY ||--|{ PRODUCT : contains
        PRODUCT ||--o{ ORDER-ITEM : "ordered in"
    </div>


    <div class="mermaid" id="mermaid2">
        graph TD
        A[Client] --> B[Load Balancer]
        B --> C[Server01]
        B --> D[Server02]
    </div>

</body>

<script>
    $(function () {

        let mdMermaidContent = "```mermaid\n" +
            "    graph LR\n" +
            "    a[\"关键字\"] --> b[\"async:修饰函数 - 表明功能是异步请求服务器获取数据\"]\n" +
            "    a[\"关键字\"] --> c[\"await:用在函数里面 - 获取响应的Promise对象\"]\n" +
            "```";
        
        console.log("")
        console.log("原始内容:");
        console.log(mdMermaidContent)
        
        
        let canMermaidContent = mdMermaidContent.replaceAll("```mermaid",'');
        canMermaidContent = canMermaidContent.replaceAll("`",'');

        console.log("")
        console.log("去掉markdown部分语法:");
        console.log(canMermaidContent)

        //参数说明:渲染后生成svg的ID属性、待渲染的mermaid内容、渲染成功后的回调函数(入参是渲染生成后的DOM-HTML)
        let renderHtmlContent = mermaid.render('mermaid-svg-new', canMermaidContent, function(svgContent) {
            console.log("")
            console.log('渲染生成的Dom:');
            console.log( svgContent)    
        });

        
        //渲染到页面上
        $(renderHtmlContent)
            .wrap("<div />")
            .addClass("mermaid mermaid-dynamic")
            .appendTo("body")

    })
</script>


</html>

在这里插入图片描述

问题

为什么渲染不了

凡是没写死到页面的,都需要使用动态进行渲染mermaid语法内容,请参考上面的动态渲染代码

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mermaid是一个用于渲染流程图、时序图、甘特图、类图、状态图和饼图等的工具,它可以用来画实体关系图、需求图等。\[1\]Mermaid可以解析渲染Markdown中的Mermaid语法,使得在Markdown中使用Mermaid语法来绘制流程图等变得更加方便。\[2\]Markdown是一种轻量级标记语言,除了编辑文字外,还支持插入图片、表格、公式等。很多博客平台都支持使用Markdown来编辑文章。而Mermaid是基于Markdown的一个库,用于渲染Markdown中的Mermaid语法,使得在Markdown中绘制流程图等变得更加简洁和方便。\[3\]所以,MermaidMarkdown是两个不同的工具,但可以结合使用,通过在Markdown中使用Mermaid语法来绘制流程图等。 #### 引用[.reference_title] - *1* *3* [markdown图表语法Mermaid介绍](https://blog.csdn.net/u010698107/article/details/124371850)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [mermaid - markdownmermaid语法解析渲染](https://blog.csdn.net/weixin_39651356/article/details/127620778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值