富文本插入级联选择器 不太好实现

547 阅读3分钟

这是去年一个项目case

先简单说下富文本的解决方案 其次 公司不太会支持让我们买编辑器使用版权 其次 开发是vue的微前端框架,业务这块都是vue&elementui, 在此前提下 最终放弃了react相关解决方案 调研过的不限于下面

产品名DEMO链接平台IE兼容性费用
UEditorueditor.baidu.com/website/onl…PCIE8免费
wangEditorwww.wangeditor.com/index.htmlPC未知免费
CKEditorckeditor.com/ckeditor-5-…PC/wise未知收费
Froala Editorwww.froala.com/wysiwyg-edi…PC/wiseIE10收费
Redactorimperavi.com/redactor/ex…PC/wise未知收费
textboxtextbox.io/PC/wise未知收费
joditxdsoft.net/jodit/examp…PC/wise未知收费

说下怎么实现在富文本里插入一个多级下拉框

思路一 富文本插入一个占位 然后new vue实例

下面这个版本是基于wangEditor实现 虽然铿锵的实现了,测试中发现的问题比较多 尤其多实例的时候,换行 光标移动的时候问题 匪夷所思的多。具体case就不赘述了。 第一个方案不是很好 其次选择编辑器本身这个块底层处理的不是很好。 尤其没有增加一个其他块元素和行间元素焦点位置校验,而在插件层层去处理焦点位置,也不好处理, 反正自己没有实现的很理想,后来也自己实现了一个富文本 解决了很大一部分问题&发现后期项目需求迭代 又暴露很多问题。每个传统富文本的能力我还需要重新撸一遍,想一想头就大。富文本不得一万一万的 不建议触碰的,根因设计问题导致维护成本增大,富文本本身需要一个渐进的实践过程, 成熟的项目还是需要一个成熟的方案,所以才不得换个思路 demo case 代码 image.png

思路二 设计一个数据结构驱动的富文本框架,能力也在富文本标准设计格式里呈现,让复杂结构的组件也成为富文本数据格式的标准实现。本这个思路,再次深度调研和实践发现QUILL 不管是开源支持,使用量&包括自己demo 这个绝对不错的选择

image.png

在此基础上 梳理下 以后都基于标准去实现任何一个富文本插件。 至此 你会发现 只要你需要你定制化开发任何你一个让你满意的quill插件 下面是一个实现思路和设计要素

有意思有两点需要注意 1是 Unicode占位这个是不可或缺的,如果没有光标会有问题(感觉是富文本黑洞因子,目前还不得其法),2 其次需要一个快元素的 contenteditabe为fasle,要不然出现event相关的默认事件问题

image.png

至于级联选择器插件的实现 内部叫自定义 多级下拉框[blockEmbed] 能力上参考了elementui ## Cascader 级联选择器 下面贴个demo地址 github.com/bigcui/quil… 效果如下

image.png