Przejdź do treści głównej

Zasady zespołu React Native

· 4 minuty czytania
Eli White
Eli White
Software Engineer @ Meta
Nieoficjalne Tłumaczenie Beta

Ta strona została przetłumaczona przez PageTurner AI (beta). Nie jest oficjalnie zatwierdzona przez projekt. Znalazłeś błąd? Zgłoś problem →

Zespół React Native w Facebooku kieruje się zasadami, które pomagają nam ustalać priorytety w rozwoju frameworka. Zasady te odzwierciedlają specyfikę naszego zespołu i niekoniecznie reprezentują wszystkich uczestników ekosystemu React Native. Udostępniamy je, by zwiększyć transparentność naszych motywacji, procesów decyzyjnych i kierunków rozwoju.

Natywne Doświadczenie

Naszym najwyższym priorytetem w React Native jest spełnienie oczekiwań użytkowników wobec każdej platformy. Dlatego React Native renderuje natywne komponenty platformy. Przedkładamy natywny wygląd i zachowanie nad spójność międzyplatformową.

Przykładowo, komponent TextInput w React Native renderuje się jako UITextField na iOS. Dzięki temu integracja z menedżerami haseł i sterowaniem klawiaturą działa od ręki. Używając natywnych komponentów, aplikacje React Native automatycznie dostosowują się do zmian w designie i zachowaniu w nowych wersjach Androida i iOS.

Aby dorównać natywnym aplikacjom, musimy też zapewnić im równą wydajność. To właśnie tutaj skupiamy nasze najbardziej ambitne wysiłki. Przykładowo, Facebook stworzył Hermes - nowy silnik JavaScript od podstaw dla React Native na Androidzie. Hermes znacząco skraca czas uruchamiania aplikacji. Pracujemy też nad głębokimi zmianami architektonicznymi optymalizującymi model wątków i ułatwiającymi integrację z natywnym kodem.

Skala Przemysłowa

Setki ekranów w aplikacji Facebooka wykorzystuje React Native. Aplikację tę używa miliardy osób na ogromnej gamie urządzeń. Dlatego inwestujemy w rozwiązywanie najbardziej złożonych problemów na wielką skalę.

Wdrażając React Native w naszych aplikacjach, identyfikujemy problemy niewidoczne w mniejszej skali. Przykładowo, Facebook skupia się na optymalizacji wydajności na szerokim spektrum urządzeń – od najnowszych iPhone'ów po starsze generacje Androida. Te priorytety kształtują nasze projekty architektoniczne jak Hermes, Fabric i TurboModules.

Udowodniliśmy, że React Native skaluje się też w ogromnych organizacjach. Gdy setki programistów pracują nad jedną aplikacją, stopniowe wdrażanie jest koniecznością. Dlatego zapewniliśmy możliwość adoptowania React Native ekran po ekranie. Wkrótce idziemy o krok dalej – umożliwimy migrację pojedynczych widoków w istniejących natywnych ekranach.

Skupienie na skali przemysłowej oznacza, że nasz zespół nie zajmuje się wieloma innymi obszarami. Przykładowo, nie prowadzimy aktywnej promocji React Native w branży. Nie tworzymy też rozwiązań dla problemów, których nie obserwujemy w dużej skali. Dzięki licznym partnerom i współtwórcom te ważne dla społeczności obszary są jednak rozwijane.

Prędkość Programowania

Doskonałe doświadczenia użytkownika tworzy się iteracyjnie. Efekt zmian w kodzie powinien być widoczny w działającej aplikacji w kilka sekund. Architektura React Native zapewnia niemal natychmiastową informację zwrotną podczas rozwoju.

Zespoły często zgłaszają, że adoptowanie React Native znacząco przyspiesza ich pracę. Natychmiastowy podgląd zmian ułatwia eksperymentowanie z koncepcjami i dopracowywanie szczegółów bez przerywania kodowania przy każdej modyfikacji. Wprowadzając zmiany w React Native, dbamy o zachowanie tej jakości doświadczeń deweloperskich.

Natychmiastowy podgląd to nie jedyna zaleta. Zespoły wykorzystują rosnący ekosystem wysokiej jakości pakietów open source. Mogą też współdzielić logikę biznesową między Androidem, iOS i webem. To pomaga szybciej wydawać aktualizacje i redukować bariery między zespołami platformowymi.

Wszystkie Platformy

Gdy prezentowaliśmy React Native w 2014 roku, towarzyszyło mu motto „Naucz się raz, pisz wszędzie” – i mamy na myśli dosłownie wszędzie. Deweloperzy powinni móc dotrzeć do jak najszerszego grona odbiorców bez ograniczeń modelu urządzenia czy systemu operacyjnego.

React Native obsługuje bardzo różne platformy, w tym mobilne, desktopowe, internetowe, telewizyjne, VR, konsole do gier i inne. Chcemy umożliwić bogate doświadczenia na każdej platformie, zamiast wymagać od developerów budowania pod najmniejszy wspólny mianownik. Aby to osiągnąć, skupiamy się na wspieraniu unikalnych funkcji każdej platformy. Obejmuje to różne mechanizmy wprowadzania danych (np. dotyk, pióro, mysz) aż po fundamentalnie różne doświadczenia użytkownika, takie jak środowiska 3D w VR.

Ta zasada wpłynęła na naszą decyzję o implementacji nowej architektury rdzenia React Native w wieloplatformowym C++ w celu zapewnienia spójności między platformami. Usprawniamy również publiczny interfejs przeznaczony dla innych opiekunów platform, takich jak Microsoft z Windows i macOS. Dążymy do umożliwienia obsługi React Native na dowolnych platformach.

Deklaratywny interfejs użytkownika

Nie wierzymy w wdrażanie identycznego interfejsu użytkownika na każdej platformie – wierzymy w udostępnianie unikalnych możliwości każdej platformy poprzez ten sam deklaratywny model programowania. Naszym deklaratywnym modelem programowania jest React.

Z naszego doświadczenia wynika, że jednokierunkowy przepływ danych spopularyzowany przez React ułatwia zrozumienie aplikacji. Preferujemy wyrażanie ekranu jako kompozycję deklaratywnych komponentów zamiast imperatywnie zarządzanych widoków. Sukces Reacta w internecie oraz kierunek rozwoju nowych natywnych frameworków Androida i iOS pokazują, że branża również przyjęła deklaratywne UI.

React spopularyzował deklaratywne interfejsy użytkownika. Pozostaje jednak wiele nierozwiązanych problemów, które React jest w wyjątkowej pozycji rozwiązać. React Native będzie nadal budować na innowacjach Reacta i pozostawać na czele ruchu deklaratywnych interfejsów użytkownika.