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 相关文章推荐
IE 上下滚动展示模仿Marquee机制
Dec 20 Javascript
JQuery学习笔录 简单的JQuery
Apr 09 Javascript
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
May 07 Javascript
javascript 数组操作详解
Jan 29 Javascript
jQuery EasyUI中DataGird动态生成列的方法
Apr 05 Javascript
jQuery Easyui快速入门教程
Aug 21 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
Oct 19 Javascript
js实现超级玛丽小游戏
Mar 18 Javascript
js实现日历
Nov 07 Javascript
让Vue响应Map或Set的变化操作
Nov 11 Javascript
js动态生成表格(节点操作)
Jan 12 Javascript
canvas多重阴影发光效果实现
Apr 20 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学习笔记 面向对象中[接口]与[多态性]的应用
2011/06/16 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
php array_map()函数实例用法
2021/03/03 PHP
用js重建星际争霸
2006/12/22 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
jQuery使用技巧简单汇总
2013/04/18 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
Bootstrap实现响应式导航栏效果
2015/12/28 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
JS去掉字符串中所有的逗号
2017/10/18 Javascript
React 高阶组件入门介绍
2018/01/11 Javascript
Node.js对MongoDB进行增删改查操作的实例代码
2019/04/18 Javascript
ES6中的class是如何实现的(附Babel编译的ES5代码详解)
2019/05/17 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python中的sort方法使用详解
2014/07/25 Python
python3设计模式之简单工厂模式
2017/10/17 Python
PyTorch 1.0 正式版已经发布了
2018/12/13 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
Django中的cookie和session
2019/08/27 Python
Java byte数组操纵方式代码实例解析
2020/07/22 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
正风肃纪剖析材料
2014/02/18 职场文书
学习党章的体会
2014/11/07 职场文书
2014年导购员工作总结
2014/11/18 职场文书
劳模事迹材料范文
2014/12/24 职场文书
酒会邀请函
2015/01/31 职场文书
2015羊年春节慰问信
2015/02/14 职场文书
幼师自荐信范文
2015/03/06 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
javascript实现计算器功能详解流程
2021/11/01 Javascript