BlockSuite协作编辑器
BlockSuite 是一个多人协作编辑器,支持多用户同时编辑一份文件,并且可以即时看到对方的编辑。BlockSuite 基于 local-first 理念,底层使用了 CRDT 库 yjs
,还支持嵌入到任意不同框架 (React 、Vue 、Angular)。
BlockSuite 的工作方式不同于传统的富文本编辑器:
- 在数据模型上,BlockSuite 没有实现事件溯源模式 (event sourcing),而是提供了一个直接基于 Yjs 的 block 树(底层采用 CRDT),支持开箱即用。它的数据持久层也被设计成本地优先 (local-first)。
- 对于富文本编辑,BlockSuite block 树中的多个不同节点可以连接到不同的富文本编辑组件,从而将富文本内容建模为多个 UI 组件而不是单个 UI 容器,从而消除了危险的单体应用
contenteditale
。 - 对于渲染层,BlockSuite 并不假设内容只能通过 DOM 来渲染。它不仅实现了基于 Web Components 的基本文档编辑 UI ,还为部分白板内容开发了基于 Canvas 的混合渲染器。两个渲染器可以共存于同一个页面上,并从同一个商店更新。
评论