前言
刚接到这个需求的时候,在项目中引入 .md 文件,需要对 markdown 语法进行解析,觉得很简单(的确很简单)但是这玩意的坑真的也让人很无奈。
网上找了很多的资料,要么就是有头没有尾,介绍的不是很详细,都没有写出痛点(这就很难过了)。本人通过实践并且在我们项目中平稳运行,想分享给后面的人,为大家排忧解难,哈哈。
需求
vue 项目中可以良好展示 markdown(只是展示功能 没有编辑功能)
安装 html-loader 与 markdown-loader
安装 html-loader 与 markdown-loader
npm i html-loader markdown-loader --save
这里注意了!html-loader 的版本号不能太新,不然是要报错的。
配置 md 文件解析规则
package.json 同级的目录下找到 vue.config.js,没有则新建一个,配置加载 md 文件的规则,如下:
module.exports = { //配置加载 md 文件时的解析规则 chainWebpack: config => { config.module .rule('md') .test(/.md/) .use('html-loader') .loader('html-loader') .end() .use('markdown-loader') .loader('markdown-loader') .end() } }
如果大家嫌样式丑陋,可以安装 github-markdown-css
npm install github-markdown-css import 'github-markdown-css'; //哪里用 markdown 就在哪里引用 可以放在 main.js
使用方法
<template> <div> <div v-html="md"> <!-- markdown-body 一定要写这个 class 名 --> </div> </div> </template> <script> import demo from "@/assets/demo.md"; console.log(demo) export default { data() { return { md:demo }; } }; </script> <style lang="less" scoped> // 这里可以约束解析出来后的 markdown 标签样式,如设置 h3{...} </style>
最终效果 打码勿怪
结语
以上就是 vue 导入.md 文件使用 markdown-loader 解析 markdown 语法的详细内容,希望对大家有用。