Expo pozwala twórcom stron internetowych tworzyć prawdziwie natywne aplikacje działające zarówno na iOS, jak i Androidzie, pisząc je tylko w JavaScript.
Czy nie to robi React Native? Co za różnica?
Expo pozwala twórcom stron internetowych tworzyć prawdziwie natywne aplikacje działające zarówno na iOS, jak i Androidzie, pisząc je tylko w JavaScript.
Czy nie to robi React Native? Co za różnica?
Odpowiedzi:
Pracuję na Expo!
Kiedy piszesz kod Expo
, piszesz React Native
kod. Expo
ma dwa główne elementy:
1) expo-cli
: narzędzie programistyczne do tworzenia projektów, przeglądania dzienników, otwierania na urządzeniu, publikowania itp.
2) Expo
Klient: aplikacja na telefon, która umożliwia otwieranie projektów podczas pracy nad nimi, bez konieczności przechodzenia przez XCode
lub Android Studio
, a także pozwala innym osobom je przeglądać! A jeśli opublikujesz go za pośrednictwem expo-cli
, ludzie będą mogli uzyskać do niego dostęp w dowolnym momencie za pośrednictwem Expo
klienta na Androida lub iOS, jeśli zalogujesz się na to samo konto, na którym zostało opublikowane. Wreszcie, umożliwiamy również tworzenie samodzielnych aplikacji, aby ludzie nie musieli używać Expo
klienta do otwierania go, a Ty możesz dystrybuować do sklepu z aplikacjami i sklepu Play, jeśli chcesz.
Tak, Expo
to zestaw narzędzi zbudowany na górze / wokół React Native
. Narzędzia te zależą od jednego z naszych głównych przekonań Expo
: możliwe jest tworzenie większości aplikacji bez konieczności pisania kodu natywnego, pod warunkiem, że masz do dyspozycji pełny zestaw interfejsów API Javascript
.
Jest to ważne, ponieważ React Native
zawsze możesz zejść do kodu natywnego. Czasami jest to niezwykle pomocne, ale wiąże się z pewnymi kosztami: musisz wysłać ludziom swoje pliki binarne, jeśli chcesz, aby je przetestowali, ktoś po drugiej stronie świata nie może po prostu stuknąć łącza, aby je otworzyć podczas pracy i nie można po prostu opublikować go jednym kliknięciem, aby ktoś mógł uzyskać do niego dostęp podobny do tego w przeglądarce.
Z Expo
, sugerujemy, aby spróbować unikać rozwijania kodu natywnego, jeśli możesz. Jak wspomniałem powyżej, uważamy, że przy dostępie do kompleksowego zestawu interfejsów API Javascript
nie powinno to być konieczne w przypadku większości aplikacji. Naszym celem jest zapewnienie tego kompleksowego zestawu interfejsów API, a następnie zbudowanie wszystkich niesamowitych narzędzi, które mogą istnieć w świecie, w którym natywny środowisko wykonawcze jest udostępniane.
Jeśli jednak musisz przekonać się, że całkowicie upuściłeś system natywny, możesz użyć go, ExpoKit
aby nadal korzystać z natywnych interfejsów API, które Expo
dają ci taki sam poziom kontroli, jak w przypadku każdego projektu natywnego. „ ExpoKit
to biblioteka Objective-C i Java, która umożliwia korzystanie z Expo
platformy i istniejącego Expo
projektu w ramach większego standardowego projektu natywnego”. Przeczytaj więcej tutaj.
Próbowałem zrobić streszczenie dokumentacji i odpowiedzi od pracowników Expo:
React Native init:
Zalety :
Wady :
Expo
Zalety :
Wady :
Mam nadzieję, że mógłbym podsumować najważniejsze punkty. Dodaj dodatkowe punkty.
Źródła: https://code.tutsplus.com/tutorials/detaching-expo-apps-to-expokit-concepts--cms-30661 https://github.com/react-community/create-react-native-app/ Issues / 516 # emisecomment-373629114 https://docs.expo.io/versions/latest/guides/detach.html (ogólna dokumentacja oficjalna)
Odpowiedź Brenta Vatne jest dobra, ale chciałbym dodać kilka szczegółów.
React Native nie zapewnia wszystkich potrzebnych interfejsów API JS, ale tylko najbardziej prymitywne funkcje. React Natywni programiści powinni używać Androida Studio / XCode do łączenia dodatkowych bibliotek natywnych. Expo ma na celu ulepszenie RN i zapewnienie wszystkich interfejsów API JS, których potrzebujesz do najbardziej powszechnych potrzeb. Zasadniczo jest to zestaw dobrze zdefiniowanych rodzimych bibliotek lib, które zostały już spakowane w jednym pakiecie: ExpoKit. Czasami biblioteki te już istnieją w świecie RN i są zintegrowane z ExpoKit.
Ważne jest również, aby zauważyć, że zespół Expo nie może uwzględnić wszystkich bibliotek dostępnych w ExpoKit (co może powodować frustrację), ponieważ zwiększy się rozmiar aplikacji hello world, ponieważ dostarczy wiele interfejsów API, które nie zostaną użyte w większości aplikacji.
Podobnie jak inne systemy (CodePush ...), Expo zapewnia system do aktualizacji aplikacji bezprzewodowo. Oznacza to, że prześlesz pakiet JS do CDN, a aplikacje mobilne automatycznie pobiorą nowy JS i użyją go przy następnym uruchomieniu (bez żądania publikacji / recenzji ze sklepów).
Expo zapewnia narzędzie CLI do przesyłania / zarządzania pakietami JS w ich CDN. W celu rozwoju możesz także zostać CDN i hostować pakiet JS na localhost. A XDE to tylko wizualne opakowanie interfejsu CLI.
Klient Expo to ogólny klient, który pozwala załadować dowolną aplikację zgodną z Expo. Wszystkie aplikacje Expo dzielą dokładnie ten sam natywny środowisko uruchomieniowe (RN + ExpoKit), jedyną różnicą jest JS, który im dajemy. Aplikacje Expo, które publikujesz w sklepach z aplikacjami, mają na stałe zapisany adres URL pakietu JS. Klient Expo jest budowany w określony sposób, dzięki czemu możesz wybrać, z którego adresu URL chcesz załadować JS, skanując kod QR lub podając adres URL.
Pamiętaj, że ten klient może również ładować pakiety JS z hosta lokalnego i ułatwiać programowanie: nie potrzebujesz XCode ani Android Studio, a pierwsze Hello World działa na telefonie (od godzin do minut). Możesz faktycznie tworzyć na iPhonie bez komputera Mac, a instalacja zajmuje 2 minuty.
W rzeczywistości, ponieważ pakiet Expo SDK może być aktualizowany, klient Expo zawiera warstwę kompatybilności, dzięki czemu jest w stanie uruchomić ostatnie 5 wersji SDK.
Ponieważ wszystkie aplikacje Expo mają ten sam natywny kod, Expo jest w stanie z łatwością zbudować te aplikacje dla Ciebie. Stworzyli usługę kompilacji w chmurze.
Główną rzeczą, która odróżnia 2 aplikacje zbudowane przez Expo, jest tylko zakodowany adres URL, na który aplikacja ma pobrać pakiet JS, aby go uruchomić.
Expo robi dla ciebie inne rzeczy, takie jak zapewnienie deklaratywnego sposobu konfiguracji ikon aplikacji, orientacji, uprawnień, klawiszy interfejsu API, pomoc w konfiguracji powiadomień wypychanych, profile udostępniania ... wiele ustawień musi być zakodowanych na stałe podczas kompilacji w aplikacji i może nie można tego zmienić drogą powietrzną.
React Native jest podobna do Cordova. Nie jest to ta sama technologia widoku (natywna vs przeglądanie stron internetowych), ale obie pozwalają kontrolować funkcje natywne z javascript i oba oferują system wtyczek, dzięki czemu programiści mogą łatwo dodawać nowe wiązania JS / natywne.
PhoneGap jest podobny do Expo. Obaj próbują wzbogacić surowy interfejs API platformy bazowej, na której są zbudowane, dzięki predefiniowanemu zestawowi dodatkowych rodzimych wtyczek. PhoneGap oferuje również usługę kompilacji i ma ogólny klient, który działa tak długo, jak korzystasz z zatwierdzonych wtyczek.
Jak widać, Expo to zestaw narzędzi. Na koniec pozwala łatwo opracowywać, udostępniać i publikować w sklepach projekty mobilne. Jest dość podobny do PhoneGap (ale o wiele lepszy i mniej mylący).
Zdecydowanie polecę Expo dla każdego nowego projektu Greenfield React Native, z wyjątkiem tych 2 przypadków:
Jest to wyjaśnione w oficjalnej dokumentacji Expo
Jaka jest różnica między Expo a React Native?
Expo przypomina trochę Railsy dla React Native. Wiele rzeczy jest dla Ciebie skonfigurowanych, więc szybciej jest zacząć i podążać właściwą ścieżką.
Dzięki Expo nie potrzebujesz Xcode ani Android Studio. Po prostu piszesz JavaScript za pomocą dowolnego edytora tekstu, w którym czujesz się komfortowo (Atom, vim, emacs, Sublime, VS Code, cokolwiek chcesz). Możesz uruchomić XDE (nasze oprogramowanie komputerowe) na Mac, Windows i Linux.
Oto kilka rzeczy, które od razu daje Ci Expo:
Wsparcie dla iOS i Androida
Możesz korzystać z aplikacji napisanych w Expo zarówno na iOS, jak i Androida od razu po wyjęciu z pudełka. Nie musisz przechodzić osobnego procesu kompilacji dla każdego z nich. Wystarczy otworzyć dowolną aplikację Expo w aplikacji Expo Client ze sklepu App Store na iOS lub Android (lub w symulatorze lub emulatorze na komputerze).
Powiadomienia push
Powiadomienia wypychane działają od razu na urządzeniu z systemem iOS i Android przy użyciu jednego, zunifikowanego interfejsu API. Nie musisz konfigurować APNS i GCM / FCM ani konfigurować ZeroPush ani nic w tym stylu. Uważamy, że uczyniliśmy to tak łatwym, jak to tylko możliwe.
Nazwa użytkownika Facebook
Samodzielne skonfigurowanie może zająć dużo czasu, ale na Expo powinieneś być w stanie uruchomić go w ciągu 10 minut lub krócej.
Natychmiastowa aktualizacja
Wszystkie aplikacje Expo można zaktualizować w kilka sekund, klikając Publikuj w XDE. Nie musisz niczego konfigurować; to po prostu działa w ten sposób. Jeśli nie korzystasz z Expo, możesz użyć Microsoft Code Push lub stworzyć własne rozwiązanie tego problemu
Zarządzanie aktywami
Obrazy, filmy, czcionki itp. Są dynamicznie dystrybuowane przez Internet dzięki Expo. Oznacza to, że działają z natychmiastową aktualizacją i mogą być zmieniane na bieżąco. Wbudowany w Expo system zarządzania zasobami zajmuje się przesyłaniem wszystkich zasobów z repozytorium do CDN, aby mogły zostać szybko załadowane dla każdego.
Bez Expo normalną rzeczą jest połączenie zasobów w aplikację, co oznacza, że nie możesz ich zmienić. Lub sam musisz zarządzać umieszczaniem swoich aktywów w sieci CDN lub podobnej.
Łatwiejsza aktualizacja do nowych wersji React Native
Wydajemy nowe wersje Expo co kilka tygodni. Możesz pozostać na starej wersji React Native, jeśli chcesz, lub uaktualnić do nowej, bez obawy o odbudowanie pliku binarnego aplikacji. Możesz martwić się o aktualizację JavaScript w swoim własnym czasie.
Ale nie ma natywnych modułów…
Najbardziej ograniczającą rzeczą w Expo jest to, że nie można dodawać własnych natywnych modułów bez odłączania i używania ExpoKit.
Expo XDE
konsoli lub w exp start
wynikach poleceń konsoli.
expo start
pokaże ci również adres IP na twoim lokalnym hoście, z którego możesz uzyskać dostęp do kodu QR z
EXPO CLI
plusy: -
1. No need to install Android studio and Xcode for start building mobile app.
2. No requirement of high configuration machine for development.
3. Mobile ui easily check on both devices android and iphone using barcode scanning.and some time you can check on online iphone and android simulators.
4. fast development.
Cons:-
1. Native dependency can not add on expo because expo project don't have ios and android folder so here expo is bounded.
2. Making apk and ipa are to difficult using expo.
3. Size of the apk/ipa is huge
React Native Cli
Plusy: -
1. Easily add native dependency for android and ios because this project structure have ios and android folder.
2. Apk and ipa build making is easy rather than expo.
Note":- React Native cli is right approach to started work on react native framework.
Cons:-
1. High configuration machine is require.
2. Adding dependency some time more difficult but good.
3. Required basic knowledge of android folder structure and ios folder structure but from this learn more things.
Możesz wybrać dowolne podejście zgodnie z własnymi wymaganiami.
Zanotuję tutaj, że Expo używa starszej wersji reagowania 16.5, co zabraniałoby ci używania nowej funkcji hooków. Jeśli zdecydujesz się na Expo, pamiętaj o kontroli wersji. Starsze wersje powiedz „reaguj nawigację” będą musiały być używane z wersją 16.5, jeśli występują dziwne błędy.
expo update
robi całkiem niezłą robotę, uzyskując kompatybilne wersje dla większości pakietów zarządzanych przez Expo. W tej chwili nie sądzę, aby aktualizowała React Navigation, ale ta biblioteka jest faktycznie sponsorowana przez Expo. Osobiście rzadko napotykam problemy z kompatybilnością między React Navigation i Expo (myślę, że napotkałem kilka problemów podczas korzystania z wersji beta). Jednak mogą pojawić się więcej problemów ze zgodnością z pakietami nie zarządzanymi przez Expo.
Odpowiedzi na temat zalet i wad expo i responsive-cli są kompletne. Chciałbym wspomnieć o innej kwestii jako moim osobistym doświadczeniu. Expo domyślnie zawiera wiele modułów w projekcie i ułatwia pracę z nim. Ale ma duży problem na etapie produkcji, ponieważ wersja android
i ios
wersje mają tak świetne rozmiary. Na przykład, jeśli masz jedną stronę z rozmiar pliku będzie o . Posiadanie tego samego projektu w respons-native-cli zaowocuje aplikacją o rozmiarze .'Hello World'
apk
19 MB
6 MB
Więc osobiście nie polecam korzystania z expo, jeśli chcesz opracować aplikację komercyjną.
Mam ponad rok, że działa z expo Jeśli rozmiar aplikacji nie jest dla Ciebie ważny, jeśli korzystasz z Expo, ponieważ łatwo jest wdrożyć Mapę, Push łatwiej niż React-native, ale na końcu projektu, jeśli chcesz opublikować aplikacji w Google Play lub innym sklepie masz wyzwanie, aby usunąć trochę Zezwolenia w swoim pakiecie APK React-native możesz zmienić wszystko, ale do importowania niektórych bibliotek, takich jak powiadomienia wypychane lub mapa również wymaga pewnych wyzwań, ponieważ musisz ręcznie dodać te biblioteki, aby projekty na Androida i iOS
expo to zestaw narzędzi oparty na React Native, aby pomóc Ci szybko uruchomić aplikację. Zapewnia zestaw narzędzi, które upraszczają tworzenie i testowanie aplikacji React Native oraz interfejsu i usług, które są zwykle dostępne w natywnych komponentach React Native innych firm. Dzięki Expo możesz je wszystkie znaleźć w Expo SDK.