用过百度富文本编辑器ueditor,还用过Ttinymce编辑器,都感受很通常,最近看到一个超级好用的富文本,除了普通富文本的这些功能,还能够直接在编辑器上输入代码来写页面。左边写内容,右边看效果,也就是至关于可视化编辑器。css
好了,废话很少说,直接开始吧。html
首先第一步确定是安装了:vue
命令行工具输入: npm install mavon-editor --save
ios
第二步,引入markdown组件 和 注册markdown组件npm
引入:axios
import {mavonEditor} from "mavon-editor";
服务器
import "mavon-editor/dist/css/index.css";
markdown
注册:app
components: {mavonEditor},
编辑器
具体步骤看下图
第三步,使用:
<template> <div> <!-- @save: 按下 ctrl + s 时触发 @change: 当值发生改变时 触发 --> <mavon-editor @save="saveDoc" @change="updateDoc" ref="editor" v-model="doc"> </mavon-editor> </div> </template> <script> import { mavonEditor } from "mavon-editor"; import "mavon-editor/dist/css/index.css"; export default { name: "Create", components: { mavonEditor }, data() { return { doc: "" }; }, methods: { updateDoc(markdown, html) { // 此时会自动将 markdown 和 html 传递到这个方法中 console.log("markdown内容: " + markdown); console.log("html内容:" + markdown); }, saveDoc(markdown, html) { // 此时会自动将 markdown 和 html 传递到这个方法中 console.log("markdown内容:" + markdown); console.log("html内容:" + html); } } }; </script>
效果展现:
接下来是修改和获取值:
// 获取 markdown
let markdown = this.$refs.editor.d_value;
// 修改 markdown
this.$refs.editor.d_value = '> hello world';
// 获取编译后的 html
let html = this.$refs.editor.d_render;
注意,通常都是使用this.$refs这样的方式来获取或修改数据,若是只使用this则只能获取到
this.$refs这样的方式来获取或修改数据,若是只使用this则只能获取到markdown和修改
markdown和修改
markdown和修改markdown获取不到编译后的html
markdown获取不到编译后的html
附:
附:
若是以为在每一个页面都要引入注册麻烦,那也能够直接挂载在vue的原型上。
在main.js 里面 引入组件而且挂载到vue原型上,如图: 这样就不须要再在页面引入而且注册了,直接在使用页面使用 标签<mavon-editor> </mavon-editor> 便可以能够开始使用了
最后,配置把图片上传到服务器:
<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替换到文本原位置 -> 
/**
* $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);
})
}
}
}