在Vue中使用Markdown编辑器以及Markdown语法的解析显示
Markdown编辑器的使用我们这里推荐使用 mavonEditor,这是一款基于Vue的markdown编辑器。既可以用来编辑Markdown语法,又可以用来解析效果图安装npm install mavon-editor --saveorcnpm install mavon-editor --save引入全局注册(大部分页面都需要markdown解析的推荐使用)/...
·
Markdown编辑器的使用
- 我们这里推荐使用 mavonEditor,这是一款基于Vue的markdown编辑器。既可以用来编辑Markdown语法,又可以用来解析
- 效果图
安装
npm install mavon-editor --save
or
cnpm install mavon-editor --save
引入
全局注册(大部分页面都需要markdown解析的推荐使用)
// import with ES6
import Vue from 'vue'
import { mavonEditor } from 'mavon-editor'
import 'mavon-editor/dist/css/index.css'
// use
Vue.use(mavonEditor)
new Vue({
'el': '#main',
data() {
return { value: '' }
}
})
局部注册(只有一到连个页面会用到markdown推荐使用这个)
import { mavonEditor } from 'mavon-editor'
import 'mavon-editor/dist/css/index.css'
export default({
components:{// 在页面中注册组件
mavonEditor
}
})
使用
<template>
<div class="mavonEditor">
<!-- markdownText: 双向绑定的数据
toolbars:编辑器的配置 -->
<mavon-editor
v-model="markdownText"
:toolbars="markdownOption"
@change="change"
style="min-height: 500px"
/>
<button @click="submit">提交</button>
</div>
</template>
<script>
export default {
/*
默认工具栏按钮全部开启, 传入自定义对象
例如: {
bold: true, // 粗体
italic: true,// 斜体
header: true,// 标题
}
此时, 仅仅显示此三个功能键
*/
data() {
return {
markdownOption: {
bold: true, // 粗体
italic: true, // 斜体
header: true, // 标题
},
markdownText: ''//传至服务器的数据
},
method: {
// 所有操作都会被解析重新渲染
change (value, render) {
// render 为 markdown 解析后的结果(转化成了HTML格式)
this..markdownText = render;
}
}
};
</script>
markdownOption 配置项
解析markdown语法
<telmplate>
<div class="content">
<mavon-editor
class="md"
:value="htmlContent" // 渲染解析的数据绑定
:subfield="prop.subfield"
:defaultOpen="prop.defaultOpen"
:toolbarsFlag="prop.toolbarsFlag"
:editable="prop.editable"
:scrollStyle="prop.scrollStyle"
/>
</div>
</template>
import { mavonEditor } from 'mavon-editor'
import 'mavon-editor/dist/css/index.css'
<script>
import { mavonEditor } from 'mavon-editor'
import 'mavon-editor/dist/css/index.css'
export default {
components: {
mavonEditor
},
computed: {
// 解析器配置
prop () {
let data = {
subfield: false,// 单双栏模式
defaultOpen: 'preview',//edit: 默认展示编辑区域 , preview: 默认展示预览区域
editable: false, // 是否允许编辑
toolbarsFlag: false,
scrollStyle: true
}
return data
}
},
data() {
return{
htmlContent: ''
}
},
mounted () {
//从后台获取数据
getInfo(){
this.htmlContent = data;
}
}
</script>
图片上传
<template>
<mavon-editor ref=md @imgAdd="$imgAdd" @imgDel="$imgDel"></mavon-editor>
</template>
exports default {
methods: {
// 绑定@imgAdd event
$imgAdd(pos, $file){
// 第一步.将图片上传到服务器.
var formdata = new FormData();
formdata.append('image', $file);
axios({
url: 'server url',
method: 'post',
data: formdata,
headers: { 'Content-Type': 'multipart/form-data' },
}).then((url) => {
// 第二步.将返回的url替换到文本原位置![...](0) -> ![...](url)
/**
* $vm 指为mavonEditor实例,可以通过如下两种方式获取
* 1. 通过引入对象获取: `import {mavonEditor} from ...` 等方式引入后,`$vm`为`mavonEditor`
* 2. 通过$refs获取: html声明ref : `<mavon-editor ref=md ></mavon-editor>,`$vm`为 `this.$refs.md`
*/
$vm.$img2Url(pos, url);
})
}
}
}
更多推荐
已为社区贡献1条内容
所有评论(0)