本周工作思考
TipTap对ProseMirror做了较好的封装,从最近的实践上看,和ueditor相比,API更加友好全面,性能上大量文本的操作也很丝滑流程。和notion的功能做简单验证,TipTap+ProseMirror对富文本的基本操作都能满足,相比notion使用的TinyMCE也没有明显的弱势,其插件机制,state驱动机制我们可以根据业务灵活定制,构建具有我们产品特点的富文本编辑器。在开发过程中,基本上摆脱了对纯dom的操作,熟悉了其开发思路,总体开发难度比dom类的富文本编辑要少了很多。在设计理念上,一切皆可扩展。通过pulgin机制,从dom渲染,dom操作,选区操作,到react组件的嵌入都能比较轻松的实现。不过总体上ProseMirror的初学成本较高,因为它完全是模块化,需要完整深入的理解其实现原理,才能比较深入的掌握这个技术。
pc course 里的很多文件的代码量超过千行以上,在这种业务逻辑密度下迭代功能,阅读一遍代码都要半个小时,在加上理解思路,修改代码,将花费更多的时间。 现在要将文件大小减少不太现实,所以要阻止单文件继续扩大,每次业务迭代要按照逻辑聚合性拆分,做技术设计的迭代,设计演进的基本原则是细粒度的模块化,逻辑分层,关注点分离,关注点要小范围的;基本办法就一个字,“拆”; 以添加课程介绍的为例,第一次迭代只有富文本,第二次迭代增加纯文本,两个逻辑相加不是简单1+1=2,需要考虑两个功能的切换,第三次迭代要增加纯文本和富文本的同步,整个逻辑又增加了一个,这个时候就要考虑拆离课程介绍到独立的文件,重新调整优化课程编辑的主逻辑设计,这样才能保持文件的大小的精简性和设计的持续优化。