参与蓝湖在线协作文档项目,编辑器基于editorjs+prosemirror来实现,数据层则是基于Yjs的CRDT数据结构来实现协同场景下的内容同步。超级文档实现了Block化的编辑能力,实时多人在线协同编辑,虚拟光标,富媒体文档,双向链表等功能。
我在其中主要负责了:
表格的编辑功能以及协同功能, 包含表格的拖拽列宽, 数据协同, 单元格的富文本编辑, 行列的动态增删;
协同光标的实现; 该功能提供了协同场景下协作者的光标位置;
针对文档内容进行mention功能的实现,允许用户@其他用户,以及引用其他文档,文档名称也会根据引用的文档实时变化。另外,也新增了内嵌蓝湖项目文档的功能,该功能基于Tiptap + Prosemirror开发的SDK,实现了实时协作编辑,类Block交互等功能。
数据层协作功能的开发,实现了多人同时在线,实时展示编辑光标的功能。会根据用户是否在线决定是否隐藏光标。同时也负责了双链功能,引用了这篇文档的文档会被关联。
实现了mention功能,该功能实现了@用户,以及其他文档的功能。文档名称也会根据提到的文档实时变化。
项目管理采用lerna + yarn workspace的开发方式,统一进行包管理,方便代码复用。后面迁移到了pnpm,去掉了lerna。渲染层则是使用了Vue3。
我负责了
内嵌蓝湖项目文档:基于Tiptap,Prosemirror开发编辑器的SDK,提供给其他业务嵌入使用。实现了实时协作编辑,富文本格式,类Block交互等功能。
技术栈是Vue3,Pnpm,Vite,Tiptap。
这个项目改善了上一个超级文档项目中的一些问题,主要是:
数据结构抛弃了纯HTML
拥有健壮的核心逻辑,包括数据层,拷贝层,以及状态层
基于prosemirror以及tiptap的插件化架构
在开发过程中,我也积极参与了团队的技术沟通,提出了一些技术方案,并且积极参与了代码的review,确保了代码的质量。
总的来说,我在蓝湖的工作经历让我更加深入地了解了协同文档的相关知识,以及构建工具Vite的使用,也提高了我的团队协作能力,以及代码质量保证能力。在这段工作经历中,我学到了很多,也受益匪浅。