Ich arbeite auf der Expo!
Wenn Sie Code Expo
schreiben, schreiben Sie React Native
Code. Expo
hat zwei Hauptstücke:
1) expo-cli
: Ein Entwicklertool zum Erstellen von Projekten, Anzeigen von Protokollen, Öffnen auf Ihrem Gerät, Veröffentlichen usw.
2) Der Expo
Client: Eine App auf Ihrem Telefon, mit der Sie Ihre Projekte öffnen können, während Sie daran arbeiten, ohne XCode
oder durchlaufen zu müssen Android Studio
, und mit der andere Personen sie auch anzeigen können! Wenn Sie es über veröffentlichen expo-cli
, können Expo
Benutzer jederzeit über den Client auf Android oder iOS darauf zugreifen, wenn Sie sich bei demselben Konto angemeldet haben, mit dem es veröffentlicht wurde. Schließlich ermöglichen wir auch das Erstellen eigenständiger Apps, damit die Expo
Benutzer den Client nicht zum Öffnen verwenden müssen, und Sie können ihn an den App Store und den Play Store verteilen, wenn Sie möchten.
Es handelt sich also Expo
um eine Reihe von Tools, die auf / um aufgebaut sind React Native
. Diese Tools hängen von einer zentralen Überzeugung ab, an der wir festhalten Expo
: Es ist möglich, die meisten Apps zu erstellen, ohne jemals nativen Code schreiben zu müssen, vorausgesetzt, Sie verfügen über einen umfassenden Satz von APIs, denen Sie ausgesetzt sind Javascript
.
Dies ist wichtig, da React Native
Sie mit immer auf nativen Code zurückgreifen können. Dies ist manchmal unglaublich hilfreich, hat aber auch Kosten: Sie müssen den Leuten Ihre Binärdateien senden, wenn sie sie testen sollen. Jemand auf der anderen Seite der Welt kann nicht einfach auf einen Link tippen, um ihn während der Arbeit zu öffnen Sie können es nicht einfach mit einem Klick veröffentlichen, damit jemand darauf zugreifen kann, ähnlich wie in einem Browser.
Mit Expo
empfehlen wir, dass Sie versuchen, nicht auf nativen Code zurückzugreifen, wenn Sie können. Wie ich oben erwähnt habe, denken wir, dass mit einem umfassenden Satz von APIs zur VerfügungJavascript
für die meisten Apps nicht erforderlich. Daher möchten wir diesen umfassenden Satz von APIs bereitstellen und dann alle fantastischen Tools erstellen, die in einer Welt existieren können, in der die native Laufzeit gemeinsam genutzt wird.
Wenn Sie jedoch feststellen müssen, dass Sie unbedingt auf native zurückgreifen, können Sie ExpoKit
die nativen APIs weiterhin verwenden, Expo
die Ihnen bei gleicher Kontrolle wie in jedem nativen Projekt zur Verfügung stehen. " ExpoKit
ist eine Objective-C- und Java-Bibliothek, mit der Sie die Expo
Plattform und Ihr vorhandenes Expo
Projekt als Teil eines größeren nativen Standardprojekts verwenden können." Lesen Sie hier mehr.
Ich habe versucht, eine Zusammenfassung der Dokumentation und Antworten der Expo-Mitarbeiter zu erstellen:
Native Init reagieren:
Vorteile :
Nachteile :
Messe
Vorteile :
Nachteile :
Ich hoffe, ich konnte die wichtigsten Punkte zusammenfassen. Bitte zögern Sie nicht, zusätzliche Punkte hinzuzufügen.
Quellen: https://code.tutsplus.com/tutorials/detaching-expo-apps-to-expokit-concepts--cms-30661 https://github.com/react-community/create-react-native-app/ Issues / 516 # issuecomment-373629114 https://docs.expo.io/versions/latest/guides/detach.html (offizielle Dokumentation im Allgemeinen)
quelle
Die Antwort von Brent Vatne ist in Ordnung, aber ich möchte einige Details hinzufügen.
Expo erweitert die API-Oberfläche von React Native
React Native bietet Ihnen nicht alle JS-APIs, die Sie sofort benötigen, sondern nur die primitivsten Funktionen. Von nativen Entwicklern wird erwartet, dass sie Android Studio / XCode verwenden, um zusätzliche native Bibliotheken zu verknüpfen. Expo zielt darauf ab, RN zu verbessern und alle JS-APIs bereitzustellen, die Sie für die häufigsten Anforderungen benötigen. Es handelt sich im Grunde genommen um eine Reihe gut definierter nativer Qualitätsbibliotheken, die bereits in einer einzigen Bibliothek für Sie verpackt sind: ExpoKit. Manchmal sind diese Bibliotheken tatsächlich bereits in der RN-Welt vorhanden und in ExpoKit integriert.
Es ist auch wichtig zu beachten, dass das Expo-Team nicht jede Bibliothek in ExpoKit aufnehmen kann (was zu Frustrationen führen kann), da die Größe der Hallo-Welt-App zunehmen würde, da viele APIs ausgeliefert würden, die nicht verwendet würden in den meisten Apps.
Die Expo bietet drahtlose JS-Updates
Wie andere Systeme (CodePush ...) bietet Expo ein System, mit dem Sie Ihre App drahtlos aktualisieren können. Dies bedeutet, dass Sie Ihr JS-Bundle auf ein CDN hochladen und die mobilen Apps das neue JS beim nächsten Start automatisch herunterladen und verwenden (ohne eine Veröffentlichung / Überprüfung in den Stores anzufordern).
Expo bietet ein CLI-Tool zum Hochladen / Verwalten der JS-Bundles auf ihrem CDN. Für die Entwicklung können Sie auch CDN werden und das JS-Bundle auf localhost hosten. Und XDE ist nur ein visueller Wrapper auf der CLI.
Expo bietet einen generischen Client
Der Expo-Client ist ein generischer Client, mit dem jede mit Expo kompatible App geladen werden kann. Alle Expo-Apps haben genau dieselbe native Laufzeit (RN + ExpoKit). Der einzige Unterschied besteht in der JS, die wir ihnen geben. In den Expo-Apps, die Sie in den App Stores veröffentlichen, ist Ihre JS-Bundle-URL fest codiert. Der Expo-Client wird auf eine bestimmte Weise erstellt, sodass Sie auswählen können, aus welcher URL der JS geladen werden soll, indem Sie einen QRCode scannen oder eine URL angeben.
Beachten Sie, dass dieser Client auch JS-Bundles von localhost laden und Ihre Entwicklungserfahrung vereinfachen kann: XCode oder Android Studio sind nicht erforderlich, und es wird viel schneller, Ihre erste Hello World auf dem Telefon zum Laufen zu bringen (von Stunden bis Minuten). Sie können tatsächlich auf einem iPhone ohne Mac entwickeln und die Einrichtung dauert 2 Minuten.
Da das Expo SDK aktualisiert werden kann, enthält der Expo-Client eine Kompatibilitätsschicht, sodass die letzten 5 SDK-Versionen ausgeführt werden können.
Expo bietet einen Build-Service
Da alle Expo-Apps denselben nativen Code verwenden, kann Expo diese Apps problemlos für Sie erstellen. Sie haben einen Cloud-Build-Service erstellt.
Das Wichtigste, was 2 von Expo erstellte Apps unterscheidet, ist nur die fest codierte URL, auf die die App das JS-Bundle herunterladen soll, um es auszuführen.
Expo erledigt einige andere Dinge für Sie, z. B. die Bereitstellung einer deklarativen Möglichkeit zum Einrichten von App-Symbolen, Ausrichtungen, Berechtigungen und API-Schlüsseln, das Einrichten von Push-Benachrichtigungen, das Bereitstellen von Profilen ... Viele Einstellungen müssen zum Zeitpunkt der Erstellung in der App fest codiert werden und können nicht über Funk gewechselt werden.
Expo soll Native reagieren, was Phonegap für Cordova ist
React Native ist ähnlich wie Cordova. Es ist nicht dieselbe Ansichtstechnologie (native oder Webansicht), aber beide ermöglichen es Ihnen, native Funktionen über Javascript zu steuern, und beide bieten ein Plugin-System, mit dem Entwickler problemlos neue JS / native Bindungen hinzufügen können.
PhoneGap ähnelt der Expo. Beide versuchen, die Roh-API der zugrunde liegenden Plattform, auf der sie basieren, mit einem vordefinierten Satz zusätzlicher nativer Plugins anzureichern. PhoneGap bietet auch einen Build-Service und verfügt über einen generischen Client , der funktioniert, solange Sie die genehmigten Plugins verwenden.
Fazit
Wie Sie sehen können, ist Expo eine Reihe von Werkzeugen. Am Ende können Sie Ihre mobilen Projekte einfach entwickeln, freigeben und in den Filialen veröffentlichen. Es ist dem PhoneGap-Erlebnis ziemlich ähnlich (aber viel besser und weniger verwirrend).
Ich werde Expo definitiv für jedes neue Greenfield-Projekt von React Native empfehlen, mit Ausnahme dieser beiden Fälle:
quelle
Dies wird in der offiziellen Expo-Dokumentation erläutert
Was ist der Unterschied zwischen Expo und React Native?
quelle
Expo XDE
Konsole oder in derexp start
Konsolenbefehlsausgabe generiert .EXPO CLI
Profis: -
Nachteile: -
Reagiere auf Native Cli
Vorteile: -
Note":- React Native cli is right approach to started work on react native framework.
Nachteile: -
Sie können jeden Ansatz nach Ihren Wünschen bevorzugen.
quelle
Ich möchte hier darauf hinweisen, dass Expo eine ältere Version von React 16.5 verwendet, die Ihnen die Verwendung der neuen Hooks-Funktion untersagt. Wenn Sie sich für Expo entscheiden, achten Sie auf Ihre Versionskontrollen. Ältere Versionen von say react-navigation müssen mit der 16.5-Version verwendet werden, wenn seltsame Fehler auftreten.
quelle
expo update
macht einen ziemlich guten Job, um die kompatiblen Versionen für die meisten von Expo verwalteten Pakete zu erhalten. Ich glaube nicht, dass React Navigation derzeit aktualisiert wird, aber diese Bibliothek wird tatsächlich von Expo gesponsert. Persönlich stoße ich selten auf Kompatibilitätsprobleme zwischen React Navigation und Expo (ich glaube, ich habe bei der Verwendung von Beta-Versionen einige Probleme festgestellt). Möglicherweise treten jedoch weitere Kompatibilitätsprobleme mit Paketen auf, die nicht von Expo verwaltet werden.Die Antworten zu den Vor- und Nachteilen von expo und react-native-cli sind vollständig. Ich möchte einen anderen Punkt als meine persönliche Erfahrung erwähnen. Die Expo enthält standardmäßig viele Module im Projekt und erleichtert die Arbeit damit. Aber es hat ein großes Problem in der Produktionsphase, weil die gebauten
android
undios
Versionen eine so große Größe haben. Zum Beispiel , wenn Sie eine Seite mit einer'Hello World'
derapk
Dateigröße sein etwa würde19 MB
. Wenn Sie dasselbe Projekt in react-native-cli haben, erhalten Sie eine App mit der Größe6 MB
.Ich persönlich empfehle daher nicht, expo zu verwenden, wenn Sie eine kommerzielle App entwickeln möchten.
quelle
Ich habe mehr als ein Jahr Erfahrung mit Expo. Wenn die Größe der App für Sie nicht wichtig ist, verwenden Sie Expo, da es einfach ist, Map, Push einfacher als React-native zu implementieren, aber am Ende des Projekts, wenn Sie veröffentlichen möchten App in Google Play oder einem anderen Store Sie haben die Herausforderung, eine Berechtigung in Ihrem APK React-native zu entfernen. Sie können alles ändern, aber für den Import einer Bibliothek wie Push-Benachrichtigung oder der Karte sind auch einige Herausforderungen erforderlich, da Sie diese Bibliotheken manuell hinzufügen müssen Android- und iOS-Projekte
quelle
expo ist eine Toolchain, die auf React Native basiert und Ihnen hilft, eine App schnell zu starten. Es bietet eine Reihe von Tools, die die Entwicklung und das Testen der React Native-App sowie der Benutzeroberfläche und der Dienste vereinfachen, die normalerweise in nativen React Native-Komponenten von Drittanbietern verfügbar sind. Mit Expo finden Sie alle im Expo SDK.
quelle