javascript在页面中加载markdown文件
依赖库及其安装
Marked.js 将markdown语法的字符串解析成为html的库
raw-loader webpack插件,将.md文件做为文本引入
highlight.js 使页面上代码实现高亮的库
安装Marked.js与highlight.js依赖,将raw-loader安装为开发环境依赖
npm install marked highlight.js
npm install --save-dev raw-loader
使用
该文档基于vue-cli3生成的项目,故webpack配置项放在vue.config.js中
1. 配置raw-loader
在项目根目录新建vue.config.js,并做如下配置
module.exports = {
configureWebpack: {
module: {
rules: [
{
test: /\.md%/i,
use: "raw-loader"
}
]
}
}
};
配置完成后,就可以在项目中引入后缀为md的文件了
2.将.md文件载入页面
由于公司项目基本都在使用iview的UI框架,iview对浏览器默认样式进行了重置,所以需要重新设定诸如h1、h2、表格等css样式,这里我将重设的样式写在md.less中;使用highlight.js时也需要引入选择的主题样式,这里我使用了github风格的代码样式。
<template>
<!-- 使用v-html绑定解析出的html代码,将所有为markdown重写的css样式放在md-container类下,不污染全局样式 -->
<article class="md-container" v-html="mdHTML"></article>
</template>
<script>
// 载入md文件
import md from "@/../README.md";
// 引入marked.js
import marked from "marked";
// 引入highlight.js
import hljs from "highlight.js";
// 引入github代码样式
import "highlight.js/styles/github.css";
// 引入重写的h1、h2、table等css样式
import "./md.less";
export default {
name: "md-example",
data() {
return {
mdHTML: null
}
},
mouted() {
// 设置marked
marked.setOptions({
// 代码区域高亮
highlight: function(code) {
return `<pre class="hljs"><code>${hljs.highlightAuto(code).value}</code></pre>`;
},
// md中的空行识别为分段,默认为false
breaks: true,
// github flavored markdown 解析为github风格的markdown,默认为true,可不设置
gfm: true,
// 若表格项为true且gfm项也为true,则以github方式解析表格,默认为true,可不设置
tables: true
});
// 将解析后的html文本赋值给mdHTML
this.mdHTML = marked(md);
// 也可以将设置marked与解析赋值合并为一步
this.mdHTML = marked(md, {
highlight: function(code) {
return `<pre class="hljs"><code>${hljs.highlightAuto(code).value}</code></pre>`;
},
breaks: true,
gfm: true,
tables: true
});
}
}
</script>
这样就可以在页面上加载出md文件了,如果一些样式上还有不满意,可以自行调整md.less样式文件以及选择不同的highlight主题。