前端markdown 插件使用(生成目录)

563 阅读1分钟

任何前端框架通用

  1. Editor.md pandao.github.io/editor.md/#…
    1.1 AngularJs 12 使用 Editor.md 实现 Markdown 编辑 www.cnblogs.com/xiaqiuchu/p…
    问题: 和ngx-echarts 不兼容,两者使用会报错(解决:可以使用原生的进行调用)

  2. Vditor b3log.org/vditor/
    问题:使用如果 ### {aaa} 这样写,无法渲染出 {aaa} 且提了issue, 官方暂时未改

  3. github.com/nhn/tui.edi…
    问题:暂时无法生成目录

vue框架 使用

  1. mavon-editor (支持vue2, vue3)

项目中的需求总结

生成目录

兜兜转转没有发现特别好用的插件,最后自己用正则解析marked.js,生成的html实现。

npm install -g marked

代码实现

import { marked } from 'marked'
this.mdContent (markdown 内容)
   let matchMapList = marked.parse(this.mdContent).match(/(<h)[\d\s]+(id=)["'\w-]+>[^<]+</g).map(item => {
      let curretItem = item.match(/(<h)[\d\s]+(id=)["'\w-]+>/g)[0]
      return {
        hName: Number(curretItem.match(/<h[\d]+/)[0].slice(2)),
        id: curretItem.match(/id=[\S]+/)[0].slice(4,-2),
        liName: item.slice(curretItem.length, -1).trim(),
        children: []
      }
    })