前言 多人协同开发确实是比较难的知识点,在技术实现上有一定挑战,但随着各种技术库的发展,目前已经有了比较成熟的解决方案。今介绍Yjs基于CRDT算法,用于构建自动同步的协作应用程序,与Quill富文本编辑器,快速构建多人协同编辑器。 前几章是介绍Quill+Yjs的基础,看项目示例的直接前往 整体样例实现章节。实现的整体效果如下:协同编辑数据模型 想要实现协同开发,就要对数据模型进行约束,目前比较有代表性的协同数据模型为:Delta数据模型: Deltas数据模型的实现是Quill.js富文本编辑器,Deltas是一种简单而富有表现力的格式,可以用来描
大家好,我是前端西瓜哥。为了测试Yjs的协同能力,我实现了支持协同简单的TODO应用。支持的功能创建房间;新增、删除、完成、清空所有待办;撤销重做;显示其他用户的光标位置;技术栈列一下用到的技术:Vite+React+TypeScript+ReactRouter;Yjs、y-websocket:实现协同编辑;源码源码放Github上了。因为花了一天写的简易Demo,没有太分模块,代码很稀烂,仅供参考。https://github.com/F-star/yjs-react-todo-app。运行方式先安装依赖:pnpminstall然后两个终端分别启动服务端和客户端:pnpmrunserverp
大家好,我是前端西瓜哥,这次来看看Yjs如何帮助我们实现协同编辑能力的。Y.js是一个支持 协同编辑 的开源库。只要我们将自己的数据转换为Y.js提供的 Y.Array、Y.Map 类型,Y.js就会自动帮我们做数据的一致性处理和同步。一致性问题协同编辑一个很棘手的问题是:多个用户同时编辑产生的冲突要怎么处理,如何保证一致性?比如两个用户同时往一个文本的末尾加上不同的字符,最终谁的字符在前,谁的字符在后?目前业界有两种方案,一个是OT(Operationaltransformation)算法,是比较主流的一种解法。流行的开源解决方案是ShareDB。它的核心在于 Transform(转换):服