1024.COM 好人一生平安
使用CRDT框架Yjs构建基于Web的协作应用
JavaScript 2022年9月9日

CRDT (Conflict-free Replicated Data Type) 无冲突复制数据类型,可以自动保证不同副本进行修改后的一致性,即无冲突,这简化了数据的分布式存储和多用户的应用,使得多个用户可以同时对同一个文件或数据进行修改。CRDT同时支持去中心化操作,不依赖单个服务器。而像Google Docs、Trello、Figma等协作软件则必须通过服务器进行同步。

市面上有很多实现了CRDT算法的开源代码,我们可以直接选择开源的CRDT库或框架使用。JavaScript的有Automerge、GUN、Legion、Yjs等。其中Yjs的性能非常好,提供的接口API也比较全面,是在在 Web 上构建协作应用程序的模块化框架的首选。

Yjs的内部数据结构是公开的共享类型,这些共享类型是具有超能力的常见数据类型,例如 Map 或 Array,更改后会自动分发给其它对等方并合并,而不会发生合并冲突。Yjs还与网络无关,支持许多现有的富文本编辑器、离线编辑、版本快照、撤消/重做和共享光标。还可以很好地扩展无限数量的用户,非常适合大型文档。

1024.com

https://yjs.dev/
https://github.com/yjs/yjs