Что такое совместное редактирование кода?

Совместное редактирование кода позволяет нескольким разработчикам одновременно работать над одним и тем же кодом, каждому — в своём браузере. Это удобно для парного программирования, собеседований, обучения и совместной отладки фрагмента кода — без настройки общей среды разработки или пересылки файлов.

Чтобы у всех была одинаковая копия, изменения передаются небольшими правками, а не целыми файлами, и один сервер определяет порядок их применения. Правки, внесённые одновременно, согласуются друг с другом, поэтому сохраняются обе.

Описание инструмента

Этот инструмент — общий редактор JavaScript с подсветкой синтаксиса. Откройте его и отправьте ссылку: все участники комнаты редактируют один и тот же код в реальном времени, видят курсоры друг друга и могут проверить или отформатировать код для всех одним щелчком.

Проверка выполняет анализ синтаксиса с помощью парсера Babel, в том числе для ES-модулей и JSX. Для форматирования используется Prettier. Отформатированный код заменяет только изменившиеся строки, поэтому текст, который другие участники вводят в это время, остаётся на месте.

Возможности

  • Редактирование в реальном времени — изменения от всех участников появляются мгновенно и объединяются, даже если люди печатают одновременно
  • Курсоры и выделения — видно, где находится каждый участник; его цвет указан рядом с именем
  • Проверка — проверяет синтаксис JavaScript и показывает первую ошибку с указанием строки и столбца
  • Форматирование — форматирует код с помощью Prettier для всех участников комнаты
  • Копирование и скачивание — сохраните копию кода в виде файла .js

Как это работает

При открытии страницы на сервере синхронизации создаётся комната, а её ссылка помещается в адресную строку. Все, кто открывает эту ссылку, присоединяются к одной комнате и видят один и тот же документ.

Каждое изменение отправляется на сервер в виде краткого описания правки — какие символы и где были вставлены или удалены, — а не всего текста. Сервер выстраивает изменения от всех участников в едином порядке, перемещает правку, внесённую в более старую версию, за те изменения, которые были сделаны раньше, а затем передаёт результат всем остальным. Введённый вами текст отображается сразу, а изменения других участников объединяются с ним, поэтому ничьи правки не теряются, даже если два человека редактируют документ одновременно.

Документ хранится в памяти сервера только пока открыта комната. Если перезагрузить страницу, вы снова попадёте в комнату и увидите текст в том виде, в каком он был. Когда все участники покинут комнату, она и её текст будут удалены.

Ограничения

  • В комнате может быть до 20 участников и до 100 000 символов.
  • После закрытия комнаты данные не сохраняются. Скачайте текст, прежде чем последний участник покинет комнату.
  • Очень быстрые или масштабные изменения, например многократная вставка всего документа подряд, отклоняются, после чего редактор перезагружает текст комнаты.
  • Если открыть ссылку на комнату в другом совместном редакторе, например открыть комнату SQL в редакторе JavaScript, появится сообщение «Комната не найдена»: каждая комната предназначена для одного языка.
  • Проверка анализирует только синтаксис. Код не запускается.