修改vditor以支持javascript形式的json
最近在研究使用docsify+markdown的文档管理,markdown文件使用VSCode+Office Viewer(Markdown Editor)插件来编写,Office Viewer(Markdown Editor)插件使用了vditor markdown编辑器,功能非常强大,支持很多扩展。为了让docsify生成的Web页面也支持更多的markdown扩展,前一篇博文 使用docsify+markdown+vditor构建gitlab pages文档库介绍了相应的源码。
但是对echart图表支持有一些差别,vditor使用的标识符为
1```echarts
2xxx
1
2
3而docsify使用插件docsify-echarts-plugin使用的标识符为:
1xxx
1
2
3为了统一,可以把docsify-echarts-plugin插件中标识符改为与vditor一致即可。
4
5另外,vditor中的echarts图表,只能输入严格的json格式数据,否则会报错,而docsify-echarts-plugin是支持javascript形式的json的。
6 比如,docsify-echarts-plugin支持如下输入:
{ settings: { theme: { categoryAxis: { axisLine: { show: false }, axisTick: { show: false }, splitLine: { show: false } }, valueAxis: { axisLine: { show: false } } } }, xAxis : [ { type : ‘category’, data : [‘周一’, ‘周二’, ‘周三’, ‘周四’, ‘周五’, ‘周六’, ‘周日’] } ], yAxis : [{ type : ‘value’ }], series : [ { name:‘直接访问’, type:‘bar’, barWidth: ‘60%’, data:[10, 52, 200, 334, 390, 330, 220] } ] }
1
2
3而vditor即会报错:
4
5```bash
6echarts render error:
7SyntaxError: Unexpected token s in JSON at position 2
它需要输入:
1{
2 "settings": {
3 "theme": {
4 "categoryAxis": {
5 "axisLine": { "show": false },
6 "axisTick": { "show": false },
7 "splitLine": { "show": false }
8 },
9 "valueAxis": { "axisLine": { "show": false } }
10 }
11 },
12 "xAxis": [
13 {
14 "type": "category",
15 "data": ["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
16 }
17 ],
18 "yAxis": [{ "type": "value" }],
19 "series": [
20 {
21 "name": "直接访问",
22 "type": "bar",
23 "barWidth": "60%",
24 "data": [10, 52, 200, 334, 390, 330, 220]
25 }
26 ]
27}
即所有字段以及字符串值都需要使用双引号括起来。
如果vditor也能支持非严格的json,即javascript形式的json就好了,但是目前官方还没修改,笔者作了一下尝试,修改vditor的源码:src\ts\markdown\chartRender.ts,在
1const option = JSON.parse(text)
前面添加两行代码,最后修改为:
1var js = eval("(" + text + ")");
2var strJS = JSON.stringify(js);
3const option = JSON.parse(strJS)
即可,但是不支持在输入数据中有注释。
使用下面的命令进行编译:
1npm run build
编译成功后会生成dist目录,把下面两个文件
1index.css
2index.min.js
复制到VSCode+Office Viewer(Markdown Editor)插件目录,替换vditor.css和vditor.js即可。
插件目录一般在:
C:\Users\用户名.vscode\extensions\cweijan.vscode-office-x.x.x\resource\vditor
- 原文作者:Witton
- 原文链接:https://wittonbell.github.io/posts/2022/2022-03-12-修改vditor以支持javascript形式的json/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。