Blog: Jezyki programowania i srodowiska programistyczne | Javascript

Dlaczego react-native? Zalety i wady

Dlaczego react-native? Zalety i wady
  • 552 views

Myśląc o rozpoczęciu kariery developera mobilnego, intuicyjnie staramy się wybrać jedną z dwóch ścieżek: Android lub iOS.

Decyzja jest dość istotna ponieważ oba środowiska diametralnie się od siebie różnią; dlatego właśnie zazwyczaj wybieramy tylko jedną ścieżkę i trzymamy się jej. Co jednak gdyby istniała trzecia możliwość? Co gdybyśmy nie musieli wybierać pomiędzy zupełnie różnymi systemami?

Rozwiązanie przychodzi w postaci stosunkowo nowej biblioteki od Facebooka: React-Native. Jest to rozwiązanie hybrydowe, ale nie oparte na WebView, tylko faktycznie tłumaczące kod na natywne komponenty. Fakt ten sprawia, że aplikacji w działaniu oraz w wyglądzie dla użytkownika nie da się odróżnić od aplikacji napisanej natywnie.

React-Native zbudowano na podstawach ReactJS i dlatego głównym językiem programowania jest tutaj JavaScript. Dodatkowo wymagana jest przynajmniej podstawowa znajomość HTML oraz CSS dla lepszego tworzenia hierarchii widoków. Szeroko wykorzystuje się tu flex css oraz rozszerzenie JSX, które jest bardzo podobne do znaczników XML. Stworzony przy pomocy tej biblioteki kod wywołuje metody Objective-C (dla iOS) oraz Java (dla Androida) do renderowania widoku. Ponadto React-Native wystawia niezbędny interfejs dla API danej platformy, dzięki czemu aplikacja ma dostęp do lokalizacji urządzenia bądź kamery w telefonie. Istnieje dość spora, i jak najbardziej zrozumiała, pokusa szybkiego przepisania istniejącej już aplikacji internetowej ReactJS. Opcja przeniesienia pewnych wspólnych komponentów logiki może zaoszczędzić sporo czasu, który można poświęcić na lepsze dopracowanie aplikacji.

Pierwszą i właściwie najważniejszą zaletą tej biblioteki, jest fakt tworzenia i utrzymywania tylko jednej bazy kodu dla obu platform. To wielki atut zarówno z punktu widzenia biznesowego jak i samego wytwarzania kodu. Z nielicznymi wyjątkami nigdy nie będziemy zmuszeni do pisania choćby kawałka kodu, który byłby specyficzny tylko dla danej platformy. Oczywiście nadal, wedle potrzeby, możemy albo stworzyć natywny komponent i przekazać poprzez odpowiedni interfejs jego właściwości do kodu JS, albo poprzez rozpoznawanie platformy, już w samym kodzie, nanieść odpowiednie poprawki dla danego rozwiązania.

Posiadanie wspólnej bazy kodu niesie za sobą znaczące skrócenie czasu potrzebnego na napisanie danej funkcjonalności. Dodatkowo, dzięki wykorzystaniu licznych open sourcowych bibliotek, z łatwością możemy uporać się z prostym interfejsem, który będzie dobrze wyglądać na obu platformach. Ponadto „live reload” w przyjemny sposób odciążają programistę od nieustannych buildów i wgrywania nowej wersji aplikacji na sprzęt.

Pomimo licznych zalet, rozwiązanie to nie jest tak doskonałe jakby się mogło wydawać. Bardzo mocno „cierpi” na wady młodego wieku i nie wszystko jest w nim dopięte na ostatni guzik. Okazjonalnie dochodzi do dziwnych zachowań szybkich przeładowań. Ze względu na złożoność wprowadzonych zmian, uaktualnienie wersji bywa wręcz niemożliwe. Potrafi to zaboleć, zwłaszcza na początku wdrażania się w nową technologię. React-Native posiada sporo zewnętrznych bibliotek, które uzupełniają go o niezbędne moduły dla lepszej pracy z urządzeniem. Niestety, ale mogą zdarzyć się sytuacje, w których będzie wymagane napisanie natywnie jakiegoś modułu, co prowadzi nas do wniosku, że umiejętności programowania w natywnym języku dla danej platformy nadal będą potrzebne. Niezbędna może okazać się również specjalistyczna wiedza o zagadnieniach charakterystycznych dla danej platformy, jak na przykład obsługa certyfikacji iOS albo znajomość plików „gradle”.

Aktualnie to React-Native jest tą super technologią o której wszyscy piszą. Na pewno szybko nie zniknie, chociażby ze względu na zaangażowanie takich graczy jak Facebook, Bloomberg czy Skype. Myśląc o rozpoczęciu projektu, powinniśmy wziąć pod uwagę fakt, że nadal jest to technologia w fazie beta.

Oczywiście jej zalety są niepodważalne, przynajmniej z biznesowego punktu widzenia. Popularny język programowania, jeden kod dla wielu platform, krótszy czas developmentu – wszystko to sprawia, że React-Native jeszcze długo będzie obecny na rynku i możemy oczekiwać pojawiania się jego kolejnych wersji. Zatem jeżeli chcesz szybko stworzyć stosunkowo prostą aplikację od razu na dwie platformy, React-Native jest idealnym dla Ciebie rozwiązaniem.