在开发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条评论
点击登录参与评论