尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

markdown-it-vue 新手避坑:8 个高频坑与一次跑通的排错路径

markdown-it-vue 新手避坑:8 个高频坑与一次跑通的排错路径 markdown-it-vue 新手避坑8 个高频坑与一次跑通的排错路径【免费下载链接】markdown-it-vueThe vue lib for markdown-it.项目地址: https://gitcode.com/gh_mirrors/ma/markdown-it-vuemarkdown-it-vue 是一个基于 Vue 2 的 Markdown 渲染组件以 markdown-it 为解析引擎内置十几个插件开箱支持目录、emoji、公式、mermaid 与 Echarts 图表。这篇文章按安装、启动、渲染排查、升级四个阶段带你把新手最常卡住的环节逐个排干净。项目速览markdown-it-vue 做的事情很直接把 Markdown 文本交给 markdown-it 解析再把渲染结果通过 Vue 组件输出省掉手写解析和逐个挂插件的流程。它内置了 emoji、下标/上标、脚注、删除线、任务列表、KaTeX/LaTeX 公式、Font Awesome 图标等能力还自研了图片预览与尺寸控制、Echarts、mermaid、flowchart.js 渲染插件。项目用 JavaScript 编写基于 Vue 2 和 vue-cli 4 构建另外提供一个去掉 mermaid 的精简版 markdown-it-vue-light。所有插件行为都能通过组件的options属性下发也支持用use方法追加自定义 markdown-it 插件。安装与依赖准备先把组件装对Vue 版本是第一道坎装完依赖、模板里也写了markdown-it-vue页面却一片空白控制台提示 Unknown custom element——这是新手遇到的第一个坑。原因不在安装本身项目的依赖锁定在vue ^2.6.12组件用 Options API 和$refs编写没有适配 Vue 3。动手之前先确认宿主项目是 Vue 2如果是 Vue 3 项目不建议硬装可以等社区兼容版本或先用精简封装隔离。确认版本无误后再执行安装npm install markdown-it-vue若 npm 在解析依赖时报版本冲突用npm ls markdown-it看一下最终解析出的版本是否与组件依赖的 12.x 一致必要时锁定版本重装而不是盲目升级。文字出来了样式全乱了渲染结果没有 GitHub 风格、排版错乱多半是漏了样式文件github-markdown-css是通过 dist 产物里的 css 引入的装组件不等于引样式。在入口文件补一行import markdown-it-vue/dist/markdown-it-vue.css精简版对应-light.css即可恢复。首次启动与环境跑官方 Demo 报 OpenSSL 错误clone 仓库git clone https://gitcode.com/gh_mirrors/ma/markdown-it-vue后执行npm run dev新版 Node 用户会直接看到ERR_OSSL_EVP_UNSUPPORTED崩溃。原因是构建链是 vue-cli 4 / webpack 4而 Node 17 的 OpenSSL 3 禁用了旧的 MD4 哈希算法。两条路都能走临时设置NODE_OPTIONS--openssl-legacy-provider再启动或者把 Node 降到 14 / 16 LTS。打包体积突然暴涨产物从几百 KB 涨到 2MB 以上、构建还特别慢元凶是 mermaid完整版内嵌 mermaid 8.x它把整个 lodash 拉了进来。如果业务用不到 mermaid直接换精简版两行引入即可import MarkdownItVueLight from markdown-it-vue/dist/markdown-it-vue-light.umd.min.js import markdown-it-vue/dist/markdown-it-vue-light.css注意精简版中 mermaid 代码块不会渲染选型前先确认功能边界。渲染不生效 按特性逐个定位HTML 被转义成一堆尖括号文本Markdown 里夹的div、br以纯文本形式显示原因是默认配置下 markdown-it 的html是关闭的出于 XSS 安全考虑组件默认只开了linkify。需要在 options 里显式打开:options{ markdownIt: { html: true, linkify: true } }这里藏着一个容易忽略的细节options对同一个字段是整体覆盖不是深合并——只传html会丢掉默认的linkify写配置时要把该字段需要的项一起带上。页面出现 echarts complains 文本Echarts 代码块没出图反而渲染出一段 pre 包裹的错误文本flowchart 同理会显示 flowchart complains。组件对这两类图表做了 try/catch把解析失败的 JSON 或运行异常直接吐回了页面。判断方向有两个一是 JSON 本身不合法缺宽高、series 不完整二是图表类型超出支持范围——完整版为了控制体积只打包了echarts.simpleK 线、地图等高级类型并不在其中。先在控制台看真实报错再修 JSON 或换支持范围内的图表类型。代码块没有高亮某语言代码块显示为纯文本是因为高亮基于 highlight.js但为控制体积只打包了常用语言js、py、go、rust、sql 等四十来种。先核对语言名是否在支持列表里冷门语言目前没有现成语言包可以提 PR 补充或自行替换高亮方案。目录和图表缺斤少两[toc]生成的目录只包含部分标题是因为 TOC 默认只收 h2 和 h3tocFirstLevel: 2、tocLastLevel: 3一级标题不会进目录需要通过options.githubToc调整层级。另一类情况是 mermaid 新语法画不出图内置版本是 8.9.2不支持后续大版本才引入的图类型写图时把语法限制在 8.x 支持的范围内即可。常见问题速查表症状常见原因处理办法组件完全不渲染宿主项目是 Vue 3确认 Vue 2 环境Vue 3 暂缓排版无样式漏引 dist 样式文件引入markdown-it-vue.cssHTML 显示为文本html默认关闭options.markdownIt.html trueEcharts 显示 complains 文本JSON 非法或图表超出 simple 版修 JSON换支持范围内的类型代码块无高亮语言不在内置列表核对支持语言清单目录缺标题TOC 默认只收 h2/h3调整githubToc层级包体积暴涨完整版带 mermaid lodash换-light精简版Demo 启动报 OpenSSL 错误Node 17 与 webpack 4 不兼容设NODE_OPTIONS或降 Node 版本升级与迁移动大依赖前先读插件源码升级 mermaid、echarts 这类大版本前先看项目里对应插件的写法内置插件实现都在 src 目录下如markdown-it-plugin-mermaid.js、markdown-it-plugin-echarts.js它们直接调用了旧版本 API只升依赖不改调用点大概率翻车。更稳妥的做法是小步升级、对照渲染结果回归一遍图表。想加自定义插件不需要改组件源码拿到组件 ref 后调用use即可例如this.$refs.myMd.use(MyPlugin)渲染完成还会触发render-complete事件适合在里面做后续处理。完整插件清单、默认选项和支持的高亮语言见项目根目录的 README_CN.md更细的选项字段定义在 types 目录的markdown-it-vue.d.ts中。解析层的疑难问题建议对照 markdown-it 官方文档排查。【免费下载链接】markdown-it-vueThe vue lib for markdown-it.项目地址: https://gitcode.com/gh_mirrors/ma/markdown-it-vue创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表