vue-cli3项目展示本地Markdown文件的方法


Posted in Javascript onJune 07, 2019

【版本】

  • vue-cli3
  • webpack@4.33.0

【步骤】1、安装插件vue-markdown-loader

npm i vue-markdown-loader -D

ps:这个插件是基于markdown-it的,不需要单独安装markdown-it。

2、修改vue.config.js配置文件(如果没有,在项目根目录新建一个):

module.exports = {
 chainWebpack: config => {
  config.module.rule('md')
   .test(/\.md/)
   .use('vue-loader')
   .loader('vue-loader')
   .end()
   .use('vue-markdown-loader')
   .loader('vue-markdown-loader/lib/markdown-compiler')
   .options({
    raw: true
   })
 }
}

3、直接上代码

App.vue

<template>
 <my-markdown></my-markdown>
</template>

<script>
import myMarkdown from './assets/cpu.md';
export default {
 components: {
  myMarkdown
 },
</script>

正常情况下,到这里就结束了。

【坑】

由于业务给我的Markdown文档的标题是这样的:

##物理CPU个数
物理CPU数就是主板上实际插入的CPU数量
……

得到的结果并不让我满意:

vue-cli3项目展示本地Markdown文件的方法

折腾了大半天才发现,这是由于标题的#井号和文字之间没有空格导致的。证明见下:

var MarkdownIt = require('markdown-it'),
md = new MarkdownIt();
console.log(md.render('# markdown-it rulezz!'))//<h1>markdown-it rulezz!</h1>
console.log(md.render('#markdown-it rulezz!'))//<p>#markdown-it rulezz!</p>

Fine :)

愚蠢的我想出了一个解决办法:

因为HyperDown.js能避免上面那样的情况,于是我用它来对文档做预处理。

安装HyperDown.js

npm install hyperdown -D

然后把vue.config.js改成了这样。

let HyperDown = require('hyperdown');
let parser = new HyperDown;

module.exports = {
 chainWebpack: config => {
  config.module.rule('md')
   .test(/\.md/)
   .use('vue-loader')
   .loader('vue-loader')
   .end()
   .use('vue-markdown-loader')
   .loader('vue-markdown-loader/lib/markdown-compiler')
   .options({
    // markdown-it config
    preset: 'default',
    breaks: true,
    raw: true,
    typographer: true,
    preprocess: function(markdownIt, source) {
     return parser.makeHtml(source);//重点在这里!!!
    }
   })
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery.uploadify 上传文件插件的使用详解 for ASP.NET
Jan 22 Javascript
用JS实现3D球状标签云示例代码
Dec 01 Javascript
jquery和js实现对div的隐藏和显示方法
Sep 26 Javascript
JavaScript实现的类字典插入或更新方法实例
Jul 10 Javascript
javascript自定义in_array()函数实现方法
Aug 03 Javascript
图解prototype、proto和constructor的三角关系
Jul 31 Javascript
js注册时输入合法性验证方法
Oct 21 Javascript
VueJs组件之父子通讯的方式
May 06 Javascript
node读写Excel操作实例分析
Nov 06 Javascript
js中延迟加载和预加载的具体使用
Jan 14 Javascript
如何利用JavaScript实现二叉搜索树
Apr 02 Javascript
QT与javascript交互数据的实现
May 26 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
Jun 07 #Javascript
详解vue项目中实现图片裁剪功能
Jun 07 #Javascript
sortable+element 实现表格行拖拽的方法示例
Jun 07 #Javascript
利用Vue-draggable组件实现Vue项目中表格内容的拖拽排序
Jun 07 #Javascript
Vue中实现权限控制的方法示例
Jun 07 #Javascript
vue 父组件中调用子组件函数的方法
Jun 06 #Javascript
通过seajs实现JavaScript的模块开发及按模块加载
Jun 06 #Javascript
You might like
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
$.ajax json数据传递方法
2008/11/19 Javascript
JQuery中$之选择器用法介绍
2011/04/05 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
js工具方法弹出蒙版
2013/05/08 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
2016/09/09 Javascript
微信小程序 视图层(xx.xml)和逻辑层(xx.js)详细介绍
2016/10/13 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
Vue生命周期示例详解
2017/04/12 Javascript
js canvas实现适用于移动端的百分比仪表盘dashboard
2017/07/18 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
Vue Socket.io源码解读
2018/02/07 Javascript
Js面试算法详解
2018/04/08 Javascript
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
Python的Django框架中的数据过滤功能
2015/07/17 Python
Python列表对象实现原理详解
2019/07/01 Python
python config文件的读写操作示例
2019/09/27 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
Django实现随机图形验证码的示例
2020/10/15 Python
将时尚融入珠宝:Adornmonde
2019/10/17 全球购物
英国男女豪华配饰和礼品网站:Black.co.uk
2020/02/28 全球购物
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
毕业生就业协议书
2014/04/11 职场文书
党的群众路线对照检查材料
2014/08/27 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
MySQL注入基础练习
2021/05/30 MySQL