Yjs 底层基础的数据结构是 Item(src/structs/Item.js )。
- ID。Item 的唯一标识符(ID),由客户端唯一 ID(clientId)和 Lamport 时间戳(clock)组成,确保每个客户端生成的 ID 是唯一的;
- content。content 指 Item 所存储的数据(比如对应插入的字符串)。正如前面提到,content这里是直接指向了 share types 实例,存储了当前 Item 对应的基础类型或者复合类型;
- position。postion 包括:left,right(Yjs 的 CRDT 数据结构基于双向链表,依赖于此);origin,originRight,这两项属性是为了解决冲突;parent,parentSub,这两项是为了支持 Yjs 的灵活的嵌套数据结构
不同 Doc 实例之间是通过 update 来进行数据的同步