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