Closed conghaoyuan closed 2 years ago
核心问题是 markmap 将组件分为了 markmap-view 和 markmap-lib 两个组件,而 markmap-view 与 浏览器 API 绑定到了一起。这个时候要么全部放到前端实现,即只把该插件作为一个拼接代码的东西,全部丢到前端去解析和渲染。 要么就尝试去除或模拟浏览器API (linkedom、jsdom之类的) 另外 markmap-cli 是直接渲染出 html。 我最近会再研究下。
https://github.com/MaxChang3/hexo-markmap/tree/dev 我尝试做了一个 dev。 大概原理是把 markmap 解析出来的 object 转为 string,然后 放到每一个div下面,用 eval 取回后渲染出来。。 感觉这样写好奇怪,但是倒是支持那些了。。我暂时观望一下
已经由 @ETFTS 修复这个问题!(https://github.com/MaxChang3/hexo-markmap/pull/4) 明天我会发布 npm包。
thanks to @ETFTS (https://github.com/MaxChang3/hexo-markmap/pull/4) , this problem has been solved. I will push a new npm package next day.
插件的逻辑是调用
markmap-lib
将所给出的 markdown 代码转换为可以被 markmap js 解析的 json 数据,插入到 html 标签后再前端进行解析。但是实际测试发现,例如我们测试一个带有公式的 markdown 代码:
他会返回:
但是返回的该段 json 由于内部混合了 HTML 代码的原因,实际上解析的时候会发生错误。 我尝试通过修改转义、再次转义还有一些办法仍为结局。
其次是,如果可以正常解析的情况下,插件的逻辑也存在一些问题。 例如我们输入:
返回:
但是由于插入到 html 标签中,他的一部分直接被作为 html 标签解析,于是也无法被作为 JSON 正常解析。
这和插件逻辑有些关系,我前一阵子没找到合适的解决办法。
如果你有思路的话 欢迎 PR !