Zbudowane w React Native - aplikacja Build.com
Ta strona została przetłumaczona przez PageTurner AI (beta). Nie jest oficjalnie zatwierdzona przez projekt. Znalazłeś błąd? Zgłoś problem →
Build.com, z siedzibą w Chico w Kalifornii, to jeden z największych internetowych sprzedawców artykułów do domu i remontów. Nasz zespół od 18 lat prowadzi prężną działalność zorientowaną na sieć, a w 2015 roku rozpoczęliśmy prace nad aplikacją mobilną. Stworzenie osobnych aplikacji na Androida i iOS nie było praktyczne ze względu na mały zespół i ograniczone doświadczenie w natywnym rozwoju. Zamiast tego zdecydowaliśmy się zaryzykować z bardzo nowym frameworkiem React Native. Nasze pierwsze commity powstały 12 sierpnia 2015 roku przy użyciu React Native v0.8.0! Aplikacja trafiła do obydwu sklepów App Store 15 października 2016 roku. Przez ostatnie dwa lata stale ulepszaliśmy i rozbudowywaliśmy aplikację. Obecnie korzystamy z wersji 0.53.0 React Native.
Aplikację możesz zobaczyć pod adresem https://www.build.com/app.

Funkcje
Nasza aplikacja jest w pełni funkcjonalna i zawiera wszystko, czego można oczekiwać od aplikacji e-commerce: listy produktów, wyszukiwanie i sortowanie, możliwość konfigurowania złożonych produktów, ulubione itp. Akceptujemy standardowe metody płatności kartą kredytową, a także PayPal oraz Apple Pay dla użytkowników iOS.
Kilka wyróżniających się funkcji, których możesz się nie spodziewać:
-
Modele 3D dostępne dla około 40 produktów w 90 wykończeniach
-
Rozszerzona rzeczywistość (AR), która pozwala użytkownikowi zobaczyć, jak oświetlenie i baterie będą wyglądać w jego domu z dokładnością rozmiaru na poziomie 98%. Aplikacja Build.com React Native jest promowana w Apple App Store w kategorii zakupów z AR! AR jest teraz dostępne na Androida i iOS!
-
Funkcje wspólnego zarządzania projektami, które umożliwiają tworzenie list zakupów dla różnych faz projektu i współpracę przy wyborze produktów
Pracujemy nad wieloma nowymi i ekscytującymi funkcjami, które będą ulepszać naszą aplikację, w tym nad kolejnym etapem zakupów immersyjnych z wykorzystaniem AR.
Nasz proces rozwoju
Build.com pozwala każdemu deweloperowi wybrać narzędzia, które najlepiej mu odpowiadają.
-
Używane IDE to m.in. Atom, IntelliJ, VS Code, Sublime, Eclipse itp.
-
Przy testach jednostkowych deweloperzy odpowiadają za tworzenie testów jednostkowych Jest dla nowych komponentów. Pracujemy też nad zwiększeniem pokrycia testami starszych części aplikacji przy użyciu
jest-coverage-ratchet. -
Używamy Jenkinsa do budowania wersji beta i kandydatów do wydania. Proces działa dobrze, ale wciąż wymaga znacznej pracy przy tworzeniu notatek wydania i innych artefaktów.
-
Testy integracyjne obejmują wspólną pulę testerów pracujących na desktopie, urządzeniach mobilnych i w sieci. Nasz inżynier automatyzacji tworzy zestaw zautomatyzowanych testów integracyjnych przy użyciu Javy i Appium.
-
Inne elementy procesu obejmują szczegółową konfigurację ESLint, własne reguły wymuszające właściwości potrzebne do testowania oraz haki przed wysłaniem (pre-push), które blokują problematyczne zmiany.
Biblioteki używane w aplikacji
Aplikacja Build.com korzysta z wielu popularnych bibliotek open source, w tym: Redux, Moment, Numeral, Enzyme oraz wielu modułów mostkowych React Native. Używamy też szeregu rozwidlonych bibliotek open source - rozwidlonych dlatego, że były porzucone lub potrzebowaliśmy niestandardowych funkcji. Szybkie zliczenie pokazuje około 115 zależności JavaScriptowych i natywnych. Chcielibyśmy zbadać narzędzia usuwające nieużywane biblioteki.
Jesteśmy w trakcie dodawania statycznego typowania przez TypeScript i rozważamy wprowadzenie opcjonalnego łańcuchowania (optional chaining). Te funkcje mogą pomóc nam w rozwiązaniu kilku klas błędów, które wciąż obserwujemy:
-
Dane o nieprawidłowym typie
-
Dane niezdefiniowane, ponieważ obiekt nie zawierał tego, czego się spodziewaliśmy
Wkład w Open Source
Ponieważ tak bardzo polegamy na otwartym oprogramowaniu, nasz zespół jest zaangażowany w oddawanie cząstki społeczności. Build.com umożliwia zespołowi publikowanie bibliotek, które stworzyliśmy, oraz zachęca nas do współtworzenia bibliotek, z których korzystamy.
Opublikowaliśmy i utrzymujemy kilka bibliotek React Native:
-
react-native-polyfill -
react-native-simple-store -
react-native-contact-picker
Przyczyniliśmy się również do rozwoju długiej listy bibliotek, w tym: React i React Native, react-native-schemes-manager, react-native-swipeable, react-native-gallery, react-native-view-transformer, react-native-navigation.
Nasza podróż
W ciągu ostatnich kilku lat obserwowaliśmy ogromny rozwój React Native i jego ekosystemu. Na początku wydawało się, że każda wersja React Native naprawiała jedne błędy, ale wprowadzała kilka nowych. Na przykład zdalne debugowanie JavaScript było niesprawne na Androida przez kilka miesięcy. Na szczęście w 2017 roku sytuacja stała się znacznie bardziej stabilna.
Biblioteki nawigacyjne
Jednym z naszych powracających wyzwań były biblioteki nawigacyjne. Przez długi czas używaliśmy biblioteki ex-nav od Expo. Sprawdzała się dobrze, ale ostatecznie została porzucona. W tym czasie intensywnie rozwijaliśmy nowe funkcje, więc zmiana biblioteki nawigacyjnej nie była możliwa. Oznaczało to, że musieliśmy ją sforkować i dostosować do obsługi Reacta 16 i iPhone'a X. Ostatecznie udało nam się przejść na react-native-navigation i mamy nadzieję, że będzie ona nadal wspierana.
Moduły mostkowe
Kolejnym dużym wyzwaniem były moduły mostkowe (bridge modules). Na początku brakowało wielu kluczowych mostków. Jeden z członków zespołu napisał react-native-contact-picker, ponieważ potrzebowaliśmy dostępu do selektora kontaktów Androida w naszej aplikacji. Widzieliśmy też wiele mostków, które zostały zepsute przez zmiany w React Native. Na przykład w wersji React Native v40 wprowadzono zmiany łamiące kompatybilność i podczas aktualizacji naszej aplikacji musiałem zgłaszać pull requesty, aby naprawić 3 lub 4 biblioteki, które nie zostały jeszcze zaktualizowane.
Perspektywy na przyszłość
W miarę jak React Native się rozwija, nasza lista życzeń do społeczności obejmuje:
-
Stabilizację i ulepszenie bibliotek nawigacyjnych
-
Utrzymanie wsparcia dla bibliotek w ekosystemie React Native
-
Usprawnienie procesu dodawania natywnych bibliotek i modułów mostkowych do projektu
Firmy i osoby z społeczności React Native wspaniale angażują swój czas i wysiłek w ulepszanie narzędzi, z których wszyscy korzystamy. Jeśli jeszcze nie angażujesz się w open source, zachęcam do przyjrzenia się ulepszaniu kodu lub dokumentacji bibliotek, których używasz. Istnieje wiele artykułów, które pomogą ci zacząć, i może to być znacznie prostsze, niż myślisz!
