Модульные строительные блоки для создания приложений для совместной работы, таких как Google Docs и Figma.
Вы когда-нибудь задумывались о том, как такие инструменты, как Google Docs или figma, позволяют нескольким пользователям одновременно работать над документом? Задумывались ли вы когда-нибудь, насколько сложно и сложно создать приложение для совместной работы, которое хорошо масштабируется?
Сегодня я рад представить вам Yjs — революционный инструмент, меняющий правила игры в сфере совместного редактирования.
Yjs расширяет границы существующих решений для совместного редактирования, которые обычно полагаются на единственный источник достоверной информации — центральный сервер — для разрешения конфликтов.
Скорее, Yjs игнорирует необходимость центрального источника истины и прокладывает путь для проектирования серверной части, опираясь на архитектуру распределенной системы.
Это проектное решение создает потенциал для создания приложений, способных к безграничной масштабируемости.
Что такое Yjs?
Проще говоря, Yjs — это набор модульных строительных блоков для создания приложений для совместной работы, таких как Google Docs и figma. Он специально разработан для того, чтобы изменить восприятие онлайн-сотрудничества, устраняя ограничения, налагаемые центральным сервером.
Будучи независимым от платформы, Yjs идеально адаптируется к предпочтительному выбору разработчика технологического стека и совместим со множеством популярных языков программирования.
Yjs создает благодатную почву для разработки масштабируемых, эффективных и общих возможностей редактирования.
Давайте посмотрим на фрагмент кода, взятый из официальной документации, чтобы продемонстрировать базовое использование Yjs, в частности, показывая, как общие типы автоматически синхронизируются между несколькими документами Yjs, предлагая разработчикам беспрепятственное сотрудничество при редактировании документов.
import * as Y from 'yjs' // Yjs documents are collections of // shared objects that sync automatically. const ydoc = new Y.Doc() // Define a shared Y.Map instance const ymap = ydoc.getMap() ymap.set('keyA', 'valueA') // Create another Yjs document (simulating a remote user) // and create some conflicting changes const ydocRemote = new Y.Doc() const ymapRemote =…