Decyzja ramowa

Czy w 2020 roku powinienem raczej używać React-Native czy Flutter w moich nowych projektach korporacyjnych?

Który framework będzie najlepiej pasował do Twojego kolejnego projektu klasy korporacyjnej? Czy ten wybór w ogóle ma znaczenie?

👋🏻Ten artykuł dotyczy projektów klasy korporacyjnej, w których stawka jest wysoka i rygorystyczne terminy. W nadchodzących tygodniach zrobię kolejny dla projektów pobocznych, który będzie miał mniejszy wpływ i stawki, z bardziej eksperymentalnym podejściem.

Od 2016 roku, dzięki mojemu doświadczeniu jako lider techniczny w Kaliop, miałem okazję tworzyć piękne aplikacje React Native, szczególnie na wielkie wydarzenia, takie jak oficjalne 🎾 Aplikacja Pucharu Davisa Międzynarodowy Turniej Tenisowy Davisa. Wiele się nauczyłem i miałem wiele okazji, aby porównać tę technologię ze słynnym i szybko rozwijającym się Flutterem.

Poza tym moi przyjaciele z Kuzzle, a w szczególności Luca Marchesini, przekazali mi miłe opinie na temat niektórych projektów z Flutterem. Jesteśmy współpracownikami i każdy z nas korzysta z innego frameworka, ponieważ zawsze lubimy eksperymentować z nowymi rzeczami. Biorąc pod uwagę, że możemy dokonać odpowiednich porównań.

Oto krótki opis 3 kluczowych punktów, które pomogą Ci wykorzystać technologię odpowiednią do Twoich potrzeb.

Reaguj natywnie, wprowadzaj aktualizacje drogą powietrzną (OTA)

W momencie, gdy piszę te linijki, główna różnica polega na tym, że specyfika języka reagującego polega na używaniu skryptów zamiast języka skompilowanego.

Dzięki temu możemy serializować do postaci string (tzw. stringify) kod JavaScript i hostować go na zdalnym serwerze! Obecnie nie ma solidnego rozwiązania, które zapewniałoby to za pomocą Fluttera, który jest obecnie kompilowany do kodu natywnego w czasie kompilacji.

Ta funkcja naprawdę zmienia obecnie zasady gry pomiędzy RN i Flutter.

Jednym z najważniejszych wskaźników rozwoju aplikacji mobilnych jest Utrzymanie, czyli zdolność aplikacji do utrzymywania użytkowników w jej używaniu i ograniczania liczby odinstalowań.

❓ Jaki jest problem ze standardowymi zachowaniami przy wydawaniu aplikacji natywnych?

Nie możesz zagwarantować aktualizacji użytkowników ze sklepów z aplikacjami. Możesz się modlić, być może możesz spróbować wywołać je za pomocą powiadomień push, ale jeśli nie, powodzenia… Ciesz się złymi notatkami w sklepach z aplikacjami.

Generalnie aktualizacje są uruchamiane w nocy, tylko przez Wi-Fi, spodziewając się, że będziesz w domu, a nie za granicą, ale nie zawsze tak jest…

Gdy ktoś opuści i odinstaluje Twoją aplikację, możesz być w 90% pewien, że użytkownik nie wróci już więcej.

Dzięki OTA możesz sprawić, że Twoja aplikacja będzie zachowywać się jak witryna internetowa i natychmiast udostępnić nową wersję i poprawki dla części lub całej bazy użytkowników.

OTA ma również pewne zalety:

  • Możesz utrzymać mniej wersji w produkcji, a może tylko jedną. Jest to główna pułapka programowania mobilnego, która wymaga, aby backend był kompatybilny wstecz z poprzednimi wersjami aplikacji.
  • Mniej wersji oznacza mniej kodu do zarządzania, co skutkuje średnio zwiększoną łatwością konserwacji.
  • Szybko twórz poprawki i ciesz się bezpiecznym, stopniowym wdrażaniem aplikacji o krótkim terminie realizacji, takich jak aplikacje eventowe zaprojektowane z myślą o wydarzeniach o krótkim czasie realizacji.

OTA to usługa w chmurze (może nie w przyszłości) oparta na wielu narzędziach, ale najczęściej używanymi usługami są Microsoft Codepush i Expo.io.

Zdecydowanie powinieneś spróbować.

🧘🏻‍♀️ Przyjęcie, łatwość konserwacji i stabilność

Jedną fajną rzeczą w React-Native jest to, że dziedziczy on z ekosystemu i praktyk React-Web. Reaguj natywnie, wykorzystując najlepsze praktyki internetowe, dzieląc kod interfejsu użytkownika na rodzaj arkusza stylów (lub style CSS w JS).

React ma wyraźne oddzielenie od logiki projektowej i biznesowej, gdzie Flutter może być skomplikowany w użyciu z usługami opartymi na Git, takimi jak pull requesty, które obecnie nie zapewniają pomocników, tak jak robią to IDE.

Podczas gdy widżety Flutter są grube i trudne do odczytania, JSX jest zbliżony do znaczników HTML i jest łatwy do odczytania.

W Kaliop większość programistów pracuje w środowisku internetowym, używając React native, możemy łatwo dodawać/usuwać programistów do projektu jako wsparcie, jeśli zajdzie taka potrzeba, nawet jeśli nigdy nie tworzyli aplikacji mobilnych. Można to zrobić, ponieważ większość programistów znają już praktyki Javascript i Web w naszej firmie.

Ponadto rynek pracy jest bardziej popularny w JavaScript niż Dart, programiści JavaScript są obecnie powszechni i nie będziesz miał dużych problemów ze znalezieniem zasobów ludzkich.

Flutter jest dość młody i będzie się ciągle udoskonalać, szczególnie jeśli chodzi o wzorce i biblioteki. Kompilacja statyczna jest również świetną rzeczą, ponieważ wyłapujesz błędy w początkowej fazie, w przypadku których pewien rodzaj błędów może utrzymywać się w maszynopisie. Ponadto występy są lepsze we Flutter.

Możesz także zobaczyć moje szczegółowe porównanie z perspektywy prawdziwego doświadczenia projektowego:



🔮Przyszłość

Społeczność i ekosystem JavaScriptu są silne i odporne, wiele świetnych firm używa języka React-Native w aplikacjach produkcyjnych: Microsoft, Uber, Tesla, Discord, Instagram lub Facebook.

Nowa wersja React Native Architecture pojawi się w 2020 roku. Ten nowy paradygmat poprawi wydajność i stanowi ogromny wysiłek, jaki Facebook podjął, aby rozwiązać niektóre długotrwałe problemy tego wieloplatformowego rozwiązania mobilnego.

Dart i Google to kolejny krok w stronę Google Fuschia, nowego mobilnego systemu operacyjnego Google. Z pewnością zoptymalizują Fluttera, aby się nim bawić.

Ponadto Flutter otrzymuje wsparcie internetowe, tak jak ma to już miejsce w przypadku React native.

Obie platformy będą w nowych latach dwoma mastodontami.

🚛 Na wynos / TLDR; 📦

Oprócz aktualizacji OTA i dojrzałości, które są głównymi różnicami między tymi dwoma narzędziami, powinieneś wybrać platformę zgodnie z preferencjami i umiejętnościami swojego zespołu.

Jeśli zaczynasz od pracy w sieci i masz już zespół internetowy, zwłaszcza z frameworkami frontendowymi, takimi jak ReactWeb, na pewno zaczniesz z dużą przewagą w React Native. Możesz także w łatwy sposób zapewnić wsparcie, ponieważ pojedynczy programista React Native (lub programista natywny) w przypadku większości projektów wystarczy, aby poradzić sobie ze specyfiką urządzeń mobilnych w natywnym zespole reagującym, takim jak powiadomienia lub wyjątki w kodzie natywnym.

Flutter osiąga 120 FPS na niektórych urządzeniach, nawet jeśli ma na celu 60 FPS, ponieważ jest lepiej zoptymalizowany.

Ale czy wydajność natywnie reagująca jest zła?

- NIE! Mit! Oni nie. Są zbliżone do natywnych i prawie cały czas 60 FPS w dobrze zoptymalizowanym.

Jeśli pochodzisz z natywnego środowiska i lubisz statyczne pisanie od razu po wyjęciu z pudełka, Flutter może być dobrym wyborem. Jest także bardziej wydajny, a nawigacja jest w pełni natywna. Nie musisz zadawać sobie pytania: „Czy to będzie działać na obu platformach?” » To po prostu działa od razu po wyjęciu z pudełka.

Istnieje wiele firm z dużym doświadczeniem, które już specjalizują się w rozwiązaniach reagujących i mają miłą społeczność, która może zapewnić wsparcie. W przypadku Fluttera jest to całkiem nowa sytuacja.