网站首页 > 技术文章 正文
起因
最近测试同学测试富文本编辑器的时候发现数据库报错,我检查了一下发现,富文本在数据库中使用的是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 列表。
- 尽量不要用那些没有维护的组件吧,也不知道我们这边的前端怎么选的。
猜你喜欢
- 2024-10-13 「干货」Deno TCP Echo Server 是怎么运行的?
- 2024-10-13 Vue.js的6个最佳表单生成器组件(vue 自定义表单组件)
- 2024-10-13 Github 上 36 个最实用的 Vue 开源库
- 2024-10-13 Vue3 插件开发详解尝鲜版「值得收藏」
- 2024-10-13 基于 Express 应用框架的技术方案选型浅谈
- 2024-10-13 超实用!基于前端vue.js生态开源项目
- 2024-10-13 细品Npm 依赖处理的进化史(npm安装依赖命令)
- 2024-10-13 Vue原来可以这样写开发效率杠杠的
- 2024-10-13 带你了解 vue-next(Vue 3.0)之 炉火纯青「实践」
- 2024-10-13 Webpack Vue瘦身,感受快到飞起的加载速度!
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- sqlset (64)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)