mermaid图表支持html标签,扩展markdown增加mermaid支持画图

>我看网上没有什么资料,只有说怎么去用它,没有说怎么才能用它。那就自己慢慢研究在让markdown支持,要自己实现这个必须要看源码,看懂它渲染的逻辑,然后修改源码,其实也挺好的,看懂源码后面自己还想要扩展什么功能也方便!

####要想让自己的markdown支持mermaid先要看看mermaid的资料

官网:

https://mermaidjs.github.io/#/

>吐槽一下资料是真的不好找

就在首先往下滑,会看到一个Example

![](https://img.tnblog.net/arcimg/aojiancc2/f91520bcce8048bc9c0685bf62e2a11f.png)

点击进去之后就可以看到,html和js资源

![](https://img.tnblog.net/arcimg/aojiancc2/a2fa8fecba1e4494ac3916d4b6ceac8a.png)

>吐槽一下这个js文件是真的大,7.1版本的就算是压缩过的也是800多kb啊,高版本的更大,这样加载一个js多影响效率啊

####然后分析这个index.html可以发现

其实渲染mermaid只需要一个js,也是牛掰只是真的太特么大了

讲过分析其实它的渲染一个带class="mermaid"的div即可

![](https://img.tnblog.net/arcimg/aojiancc2/a4dae6a03d0b45618c132f1643dbae2f.png)

感觉渲染还是挺简单的,如果想让markdown支持话,需要自定义语法,然后自定义解析。

####然后去分析markdown的源码,看看怎么自定义解析的标签

#####可以参考流程图和时序图的插入方式!

![](https://img.tnblog.net/arcimg/aojiancc2/13fc1821c2004fa4a2d8f33cc30a9fb0.png)

讲过对源码的分析,发现源码中markedRenderer方法就是对marked的渲染

比如流程图时序图什么的

![](https://img.tnblog.net/arcimg/aojiancc2/40b91d347757435496df1a3d72991c22.png)

而且测试的时候发现输入内容的时候!都会执行一遍都会渲染哇!预览效果吧

其实也就是渲染三个点开头的

![](https://img.tnblog.net/arcimg/aojiancc2/408f5fccf7be47299ea057c473b7fdc5.png)

就是这个方法:l.code = function (e, i, o)

![](https://img.tnblog.net/arcimg/aojiancc2/3e0811f85a694c94aef69f89c31e751f.png)

我们根据输出的格式看就知道是解析三个点这种格式的,可以看看输出的效果

![](https://img.tnblog.net/arcimg/aojiancc2/0a991455611d4e9a930a2f1ba8702932.png)

I就是标志:这里是flow

E其实就输入的内容!

所以我猜想要支持自定义mermaid格式,是不是在这里加一个解析就行了!

![](https://img.tnblog.net/arcimg/aojiancc2/6896b59d46a84a9cb492fed3fa2cb6bd.png)

哈哈加上这句话后就真的会生成这样一个div!

![](https://img.tnblog.net/arcimg/aojiancc2/9e81ff41a4a5474fbad7ebfcce53adaf.png)

哈哈哈,然后就剩下渲染了!不过这个js800多kb也太大了接近1m了….emmmm,这个太影响加载速度了吧

看看画图的效果:

![](https://img.tnblog.net/arcimg/aojiancc2/f2a0482397c74149971a0f220647971a.png)

当然渲染过程也是坑多得很.....这里暂时先不说了...搞得太久了

![](https://img.tnblog.net/arcimg/aojiancc2/d9fe29d9e59b4d51b90a376f3a55e804.gif)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值