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 相关文章推荐
在视频前插入广告
Nov 20 Javascript
Javascript attachEvent传递参数的办法
Dec 14 Javascript
TinyMCE 新增本地图片上传功能
Nov 05 Javascript
jQuery点击tr实现checkbox选中的方法
Mar 19 Javascript
javascript数组的使用
Mar 28 Javascript
jQuery 和 CSS 的文本特效插件集锦
Dec 12 Javascript
jQuery中size()方法用法实例
Dec 27 Javascript
Javascript设计模式之观察者模式(推荐)
Mar 29 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
Aug 31 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
Jan 29 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
Mar 28 Javascript
vue鼠标悬停事件实例详解
Apr 01 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初学者们头痛的十四个问题
2007/01/15 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
PHP反射API示例分享
2016/10/08 PHP
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
js 鼠标移动显示图片的简单实例
2013/12/25 Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
2014/05/04 Javascript
jQuery中animate动画第二次点击事件没反应
2015/05/07 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)
2016/11/09 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
详解ES6中的代理模式——Proxy
2018/01/08 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
2018/09/19 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
python插入排序算法的实现代码
2013/11/21 Python
Python探索之自定义实现线程池
2017/10/27 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
Python 实现数据结构-循环队列的操作方法
2019/07/17 Python
如何在Django项目中引入静态文件
2019/07/26 Python
结合 CSS3 transition transform 实现简单的跑马灯效果的示例
2018/02/07 HTML / CSS
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
捷克时尚网上商店:OTTO
2018/03/15 全球购物
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
应届生会计电算化求职信
2013/10/03 职场文书
总务岗位职责
2013/11/19 职场文书
建筑经济管理专业求职信分享
2014/01/06 职场文书
责任书格式范文
2014/07/28 职场文书
环保公益策划方案
2014/08/15 职场文书
公民代理授权委托书
2014/09/24 职场文书
教师三严三实对照检查材料
2014/09/25 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
源码解读Spring-Integration执行过程
2021/06/11 Java/Android