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?
źródło
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?
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)
źródło
Odpowiedź Brenta Vatne jest dobra, ale chciałbym dodać kilka szczegółów.
Expo rozszerza powierzchnię API React Native
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.
Expo zapewnia bezprzewodową aktualizację JS
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.
Expo zapewnia ogólny klient
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.
Expo zapewnia usługę kompilacji
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ą.
Expo ma React Native, czym jest Phonegap dla Cordova
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.
Wniosek
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:
źródło
Jest to wyjaśnione w oficjalnej dokumentacji Expo
Jaka jest różnica między Expo a React Native?
źródło
Expo XDE
konsoli lub wexp 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 zEXPO CLI
plusy: -
Cons:-
React Native Cli
Plusy: -
Note":- React Native cli is right approach to started work on react native framework.
Cons:-
Możesz wybrać dowolne podejście zgodnie z własnymi wymaganiami.
źródło
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.
źródło
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
iios
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ą.
źródło
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
źródło
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.
źródło