vue-quill-editor 添加图片上传和缩放组件
起因
最近测试同学测试富文本编辑器的时候发现数据库报错,我检查了一下发现,富文本在数据库中使用的是text类型,可以存 65535 ,一般的文案再多也不可能这么多吧。于是测试了一下前端后台界面,没想到前端坑死人,竟然把图片给我转成了 base64 传过来,那不超过最大长度才怪。
优化
肯定是不能怎么搞的,于是让前端给我改一下,没想到他居然说不能改,做不了,竟然还想骗我。 好吧,好歹我也是从前后端不分离的时代过来的,虽然前端布局啥的不会搞,简单的js语法还是懂的。 于是测试了好几个 quill 编辑器的插件,竟然没有一个好用,各种报错,比如 '# 'imports' of undefined','undefined (reading 'register')',又是改webpack.base.js,又是改vue.config.js,结果一个都没用。 浪费了一上午的时间,差点有点绝望了。
到了下午,灵机一动,翻看那几个用不了的插件 github 问题(issue)列表,发现有人发了自己写的新版组件,大喜。
于是测试了一下,完美。yarn add quill-image-super-solution-module quill-resize-module
具体用法见文档,非常清晰,这个后端都能搞定。
图片删除
另外图片删除后需要调用后端接口同步删除,这里可以监听一下编辑器里的文本变化事件 代码如下:
editor.on('text-change',
(delta, oldContents, source) => {
if (source !== 'user') return;
const inserted = getImgUrls(delta);
const deleted = getImgUrls(editor.getContents().diff(oldContents));
inserted.length && console.log('insert', inserted)
deleted.length && console.log('delete', deleted)
});
function getImgUrls(delta) {
return delta.ops.filter(i => i.insert && i.insert.image).map(i => i.insert.image);
}
总结
- 对于后端程序员来说,还是需要懂一些前端,一方面前后端要协调,少不了要知道一些前端知识;另外一方面,可以解决某些前端认为不能解决的问题。
- 组件不更新后的解决办法,看 github issue 列表。
- 尽量不要用那些没有维护的组件吧,也不知道我们这边的前端怎么选的。
作者:半山
出处:http://www.cnblogs.com/xdao/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。