在开发Vue+ElementUI项目中,需要用到富文本编辑器,挑选了一下,最终选定vue-quill-editor。现将vue-quill-editor使用分享给大家。
1、安装
npm install quill
2、引入
import { quillEditor } from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'需要在components中引入组件:
components: {
quillEditor
},3、使用
<quill-editor ref="text" v-model="form.info" class="myQuillEditor" />
此时页面即已经出现富文本编辑器:

但是其中的图片上传,是base64,这个可能不是特别合适,经过到官网查询,可以进一步安装扩展quill-image-extend-module实现本地上传到服务器图片。
quill-image-extend-module能实现以下功能:
提供图片上传到服务器的功能
复制插入
拖拽插入
显示上传进度
显示上传成功或者失败
支持与其他模块一起使用(例如调整图片大小)
4、安装quill-image-extend-module
npm install quill-image-extend-module --save-dev
引入:
import {quillEditor, Quill} from 'vue-quill-editor'
import {container, ImageExtend, QuillWatch} from 'quill-image-extend-module'
Quill.register('modules/ImageExtend', ImageExtend)实例代码:
<template>
<div class="quill-wrap">
<quill-editor
v-model="content"
ref="myQuillEditor"
:options="editorOption"
>
</quill-editor>
</div></template><script>
import {quillEditor, Quill} from 'vue-quill-editor'
import {container, ImageExtend, QuillWatch} from 'quill-image-extend-module'
Quill.register('modules/ImageExtend', ImageExtend)
export default {
components: {quillEditor},
data() {
return {
content: '',
// 富文本框参数设置
editorOption: {
modules: {
ImageExtend: {
loading: true,
name: 'img',
action: updateUrl,
response: (res) => {
return res.info }
},
toolbar: {
container: container,
handlers: {
'image': function () {
QuillWatch.emit(this.quill.id)
}
}
}
}
}
}
}
}</script>quill-image-extend-module 的所有可配置项
editorOption: {
modules: {
ImageExtend: { // 如果不作设置,即{} 则依然开启复制粘贴功能且以base64插入
name: 'img', // 图片参数名
size: 3, // 可选参数 图片大小,单位为M,1M = 1024kb
action: updateUrl, // 服务器地址, 如果action为空,则采用base64插入图片
// response 为一个函数用来获取服务器返回的具体图片地址
// 例如服务器返回{code: 200; data:{ url: 'baidu.com'}}
// 则 return res.data.url
response: (res) => {
return res.info },
headers: (xhr) => {
// xhr.setRequestHeader('myHeader','myValue')
}, // 可选参数 设置请求头部
sizeError: () => {}, // 图片超过大小的回调
start: () => {}, // 可选参数 自定义开始上传触发事件
end: () => {}, // 可选参数 自定义上传结束触发的事件,无论成功或者失败
error: () => {}, // 可选参数 上传失败触发的事件
success: () => {}, // 可选参数 上传成功触发的事件
change: (xhr, formData) => {
// xhr.setRequestHeader('myHeader','myValue')
// formData.append('token', 'myToken')
} // 可选参数 每次选择图片触发,也可用来设置头部,但比headers多了一个参数,可设置formData
},
toolbar: { // 如果不上传图片到服务器,此处不必配置
container: container, // container为工具栏,此次引入了全部工具栏,也可自行配置
handlers: {
'image': function () { // 劫持原来的图片点击按钮事件
QuillWatch.emit(this.quill.id)
}
}
}
}
}关于上传图片服务器返回值问题:
由于不同的用户的服务器返回的数据格式不尽相同
因此
在配置中,你必须如下操作
// 你必须把返回的数据中所包含的图片地址 return 回去
respnse: (res) => {
return res.info // 这里切记要return回你的图片地址
}比如你的服务器返回的成功数据为
{code: 200,starus: true,result: {
img: 'http://placehold.it/100x100' // 服务器返回的数据中的图片的地址
}}那么你应该在参数中写为:
// 你必须把返回的数据中所包含的图片地址 return 回去
respnse: (res) => {
return res.result.img // 这里切记要return回你的图片地址
}

0条评论
点击登录参与评论