Czym jest wspólna edycja kodu?

Wspólna edycja kodu pozwala kilku programistom pracować jednocześnie nad tym samym kodem, każdemu we własnej przeglądarce. Przydaje się podczas programowania w parach, rozmów rekrutacyjnych, nauczania i wspólnego debugowania fragmentu kodu — bez konfigurowania wspólnego środowiska IDE ani przesyłania sobie plików.

Aby kopie kodu u wszystkich były identyczne, zmiany są przesyłane jako niewielkie poprawki zamiast całych plików, a jeden serwer ustala kolejność ich zastosowania. Zmiany wprowadzone w tym samym momencie są wzajemnie dostosowywane, dzięki czemu żadna z nich nie zostaje utracona.

Opis narzędzia

To narzędzie to współdzielony edytor TypeScript z podświetlaniem składni. Otwórz go i wyślij link: wszyscy uczestnicy edytują ten sam kod w czasie rzeczywistym, widzą nawzajem swoje kursory i jednym kliknięciem mogą sprawdzić poprawność lub sformatować kod dla wszystkich.

Sprawdzanie poprawności składni odbywa się za pomocą parsera Babel i jego wtyczki TypeScript, dzięki czemu rozpoznawane są adnotacje typów, interfejsy, typy generyczne i wyliczenia. Formatowanie korzysta z parsera TypeScript w Prettier, a sformatowany kod zastępuje tylko zmienione wiersze, więc tekst wpisywany w tym czasie przez inne osoby pozostaje na swoim miejscu.

Funkcje

  • Edycja w czasie rzeczywistym — zmiany wprowadzane przez wszystkich pojawiają się natychmiast i są łączone, gdy kilka osób pisze jednocześnie
  • Kursory i zaznaczenia — zobacz, gdzie znajduje się każda osoba; jej kolor jest widoczny obok nazwy
  • Sprawdź składnię — sprawdza składnię TypeScript i wyświetla pierwszy błąd wraz z numerem wiersza i kolumny
  • Formatuj — formatuje kod za pomocą Prettier dla wszystkich uczestników pokoju
  • Kopiuj i pobierz — zachowaj kopię kodu jako plik .ts

Jak to działa

Po otwarciu strony tworzony jest pokój na serwerze synchronizacji, a jego link pojawia się w pasku adresu. Każda osoba, która otworzy ten link, dołącza do tego samego pokoju i widzi ten sam dokument.

Każda zmiana jest wysyłana do serwera jako krótki opis tego, co się zmieniło — które znaki i w którym miejscu zostały wstawione lub usunięte — zamiast jako cały tekst. Serwer ustala kolejność zmian wprowadzonych przez wszystkich, umieszcza zmianę dokonaną na starszej wersji za zmianami, które nadeszły wcześniej, a następnie przekazuje wynik pozostałym uczestnikom. Wpisywany przez Ciebie tekst pojawia się od razu, a zmiany innych osób są z nim łączone, dzięki czemu niczyj tekst nie ginie, gdy dwie osoby edytują dokument w tym samym momencie.

Dokument jest przechowywany w pamięci serwera tylko wtedy, gdy pokój jest otwarty. Po ponownym wczytaniu strony wrócisz do pokoju z tekstem w takim stanie, w jakim był wcześniej; gdy wszyscy opuszczą pokój, pokój i jego tekst zostaną usunięte.

Ograniczenia

  • W pokoju może przebywać maksymalnie 20 osób, a dokument może zawierać do 100 000 znaków.
  • Po zamknięciu pokoju nic nie jest przechowywane. Pobierz tekst, zanim opuści go ostatnia osoba.
  • Bardzo szybkie lub obszerne zmiany, takie jak wielokrotne wklejanie całego dokumentu jedna operacja po drugiej, są odrzucane, a tekst w pokoju zostaje ponownie wczytany w edytorze.
  • Otwarcie linku do pokoju w innym edytorze współpracy (na przykład pokoju SQL w edytorze JavaScript) wyświetla komunikat „Nie znaleziono pokoju”: każdy pokój jest przypisany do jednego języka.
  • Sprawdzanie poprawności obejmuje tylko składnię, a nie typy: kod, który nie skompilowałby się z powodu błędu typu, nadal przechodzi sprawdzanie. JSX (.tsx) nie jest obsługiwany.