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:
- Sie wissen bereits, dass Sie APIs benötigen, die in Expo nicht verfügbar sind und nicht in Kürze verfügbar sein werden
- Ihre App-Größe ist Ihnen sehr wichtig (HelloWorld ist aufgrund der großen Größe von ExpoKit> 25 MB groß, nimmt danach jedoch nicht viel zu, da es sich nur um JS handelt.)