Expo permet aux développeurs Web de créer de véritables applications natives fonctionnant à la fois sur iOS et Android en les écrivant une seule fois en JavaScript.
N'est-ce pas ce que React Native fait? Quelle est la différence?
Je travaille à Expo!
Lorsque vous écrivez du code dans Expo
, vous écrivez React Native
code. Expo
a deux pièces principales:
1) expo-cli
: outil de développement pour la création de projets, la visualisation de journaux, l’ouverture sur votre appareil, la publication, etc.
2) Le client Expo
: une application sur votre téléphone qui vous permet d’ouvrir vos projets pendant que vous y travaillez, sans avoir à passer par XCode
ou Android Studio
, et permet également à d’autres les gens les voient aussi! Et si vous le publiez via expo-cli
, les utilisateurs peuvent y accéder à tout moment via le client Expo
sur Android ou sur iOS s'ils sont connectés au même compte que celui avec lequel ils ont été publiés. Enfin, nous permettons également de créer des applications autonomes afin que les utilisateurs ne soient pas obligés d'utiliser le client Expo
pour l'ouvrir. Vous pouvez également le distribuer sur l'app store et le Play Store si vous le souhaitez.
Donc, Expo
est un ensemble d’outils construit autour de React Native
. Ces outils reposent sur une conviction fondamentale que nous avons en Expo
: il est possible de créer la plupart des applications sans jamais avoir besoin d'écrire de code natif, à condition que vous disposiez d'un ensemble complet d'API exposées à Javascript
.
Ceci est important car avec React Native
, vous pouvez toujours accéder au code natif. C'est incroyablement utile parfois, mais cela a un coût: vous devez envoyer vos fichiers binaires aux utilisateurs si vous voulez les tester, quelqu'un de l'autre côté du monde ne peut pas simplement appuyer sur un lien pour l'ouvrir pendant que vous travaillez. et vous ne pouvez pas simplement le publier en un clic pour que quelqu'un y accède de la même manière que vous le feriez dans un navigateur.
Avec Expo
, nous vous suggérons d’essayer d’éviter de passer au code natif, si vous le pouvez. Comme je l'ai mentionné ci-dessus, nous pensons qu'avec un ensemble complet d'API disponibles pour Javascript
, cela ne devrait pas être nécessaire pour la plupart des applications. Nous avons donc pour objectif de fournir cet ensemble complet d’API, puis de construire tous les formidables outils pouvant exister dans un monde où le moteur d’exécution natif est partagé.
Toutefois, si vous devez absolument trouver le mode natif, vous pouvez utiliser ExpoKit
pour continuer à utiliser les API natives que Expo
vous offre tout en gardant le même niveau de contrôle que dans n'importe quel projet natif. . "ExpoKit
est une bibliothèque Objective-C et Java qui vous permet d'utiliser la plate-forme Expo
et votre projet Expo
existant dans le cadre d'un projet natif standard plus grand. " Lire la suite ici.
J'ai essayé de faire un résumé de la documentation et des réponses des employés de l'Expo:
Réagir init natif:
Avantages :
Inconvénients :
Expo
Avantages :
Inconvénients :
J'espère pouvoir résumer les points les plus importants. S'il vous plaît n'hésitez pas à ajouter des points supplémentaires.
Sources: https://code.tutsplus.com/tutorials/detaching-expo-apps-to-expokit-concepts--cms-30661https://github.com/react -community/create-react-native-app/issues/516 # issueecomment-373629114https://docs.expo.io/versions/latest/guides/detach.html (documentation officielle en général)
Ceci est expliqué dans la documentation officielle de l'Expo
Quelle est la différence entre Expo et React Native?
Expo ressemble un peu à Rails pour React Native. Beaucoup de choses sont préparées pour vous, il est donc plus rapide de commencer et sur le bon chemin.
Avec Expo, vous n’avez pas besoin de Xcode ou de Android Studio. Vous venez d'écrire JavaScript en utilisant l'éditeur de texte avec lequel vous êtes à l'aise (Atom, Vim, Emacs, Sublime, VS Code, tout ce que vous aimez). Vous pouvez exécuter XDE (notre logiciel de bureau) sur Mac, Windows et Linux.
Voici quelques-unes des choses que l’Expo vous offre hors de la boîte et qui fonctionnent tout de suite:
Support pour iOS et Android
Vous pouvez utiliser les applications écrites dans Expo sur iOS et Android directement. Vous n'avez pas besoin de suivre un processus de construction distinct pour chacun d'eux. Ouvrez simplement une application Expo dans l'application Expo Client depuis l'App Store sur iOS ou Android (ou dans un simulateur ou un émulateur sur votre ordinateur).
Notifications Push
Les notifications push fonctionnent immédiatement avec iOS et Android, à l'aide d'une API unique et unifiée. Vous n’avez pas besoin de configurer APNS et GCM/FCM, ni de configurer ZeroPush ou quelque chose du genre. Nous pensons que nous avons simplifié les choses autant que possible.
Facebook Login
Cela peut prendre beaucoup de temps pour vous préparer vous-même, mais vous devriez être capable de le faire fonctionner en 10 minutes ou moins sur Expo.
Mise à jour instantanée
Toutes les applications Expo peuvent être mises à jour en quelques secondes en cliquant simplement sur Publier dans XDE. Vous ne devez rien configurer; ça marche juste comme ça. Si vous n’utilisez pas Expo, vous devez utiliser Microsoft Code Push ou créer votre propre solution à ce problème.
Gestion d'actifs
Les images, les vidéos, les polices de caractères, etc. sont tous distribués de manière dynamique sur Internet avec Expo. Cela signifie qu'ils fonctionnent avec une mise à jour instantanée et peuvent être modifiés à la volée. Le système de gestion des actifs intégré à Expo prend en charge le téléchargement de tous les actifs de votre dépôt sur un CDN afin qu’ils soient rapidement téléchargés par quiconque.
Sans Expo, la chose normale à faire est de regrouper vos actifs dans votre application, ce qui signifie que vous ne pouvez pas les modifier. Sinon, vous devrez gérer le fait de placer vos actifs sur un CDN ou similaire vous-même.
Mise à jour simplifiée vers un nouveau React Sorties natives
Nous faisons de nouvelles versions d'Expo toutes les quelques semaines. Vous pouvez rester sur une ancienne version de React Native si vous le souhaitez ou mettre à niveau vers une nouvelle version sans vous soucier de la reconstruction du binaire de votre application. Vous pouvez vous préoccuper de la mise à niveau de JavaScript à votre rythme.
Mais pas de modules natifs…
Le principal inconvénient d’Expo est qu’il est impossible d’ajouter vos propres modules natifs sans détacher et utiliser ExpoKit.
La réponse de Brent Vatne est correcte mais je voudrais ajouter quelques détails.
React Native ne vous fournit pas toutes les API JS dont vous avez besoin, mais uniquement les fonctionnalités les plus primitives. React Les développeurs natifs sont censés utiliser Android Studio/XCode pour lier d'autres bibliothèques natives. Expo vise à améliorer les RN et à fournir toutes les API JS dont vous avez besoin pour répondre aux besoins les plus courants. Il s’agit en fait d’un ensemble de bibliothèques natives de qualité bien définies, déjà emballées pour vous dans une seule bibliothèque: ExpoKit. Parfois, ces bibliothèques existent déjà dans le monde des infirmières et sont intégrées à ExpoKit.
Il est également important de noter que l'équipe de l'Expo ne peut inclure toutes les bibliothèques présentes dans ExpoKit (ce qui peut créer une certaine frustration), car la taille de l'application hello world augmenterait car elle produirait de nombreuses API qui ne seraient pas utilisées. dans la plupart des applications.
Comme d'autres systèmes (CodePush ...), Expo fournit un système permettant de mettre à jour votre application par liaison radio. Cela signifie que vous téléchargez votre paquet JS sur un CDN et que les applications mobiles téléchargeront et utiliseront automatiquement le nouveau JS au prochain démarrage (sans demander une publication/revue des magasins).
Expo fournit un outil CLI pour charger/gérer les offres JS sur leur CDN. Pour le développement, vous pouvez également choisir de devenir le CDN et d’héberger le bundle JS sur localhost. Et XDE est juste un wrapper visuel sur la CLI.
Le client Expo est un client générique qui permet de charger toute application compatible avec Expo. Toutes les applications Expo partagent exactement le même runtime natif (RN + ExpoKit), la seule différence est le JS que nous leur fournissons. Les applications Expo que vous publiez dans les magasins d'applications ont votre URL de paquet JS codée en dur. Le client Expo est construit de manière spécifique afin que vous puissiez choisir l’URL à charger pour le JS, en scannant un QRCode ou en fournissant une URL.
Notez que ce client peut également charger des ensembles JS depuis localhost et faciliter votre expérience de développement: nul besoin de XCode ou de Android Studio, et il est beaucoup plus rapide de lancer votre premier Hello World au téléphone (à partir de heures à minutes). Vous pouvez réellement développer sur un iPhone sans Mac et la configuration prend 2 minutes.
En réalité, le SDK de l'Expo pouvant être mis à niveau, le client de l'Expo comprend une couche de compatibilité lui permettant d'exécuter les 5 dernières versions du SDK.
Comme toutes les applications Expo partagent le même code natif, Expo peut facilement créer ces applications pour vous. Ils ont créé un service de construction en nuage.
La principale chose qui différencie 2 applications construites par Expo est simplement l'URL codée en dur sur laquelle l'application est supposée télécharger le bundle JS à exécuter.
Expo fait d’autres choses pour vous, comme fournir un moyen déclaratif de configurer les icônes, orientations, autorisations, clés d’application, en vous aidant à configurer les notifications Push, les profils de provisioning, etc. De nombreux paramètres doivent être codés en dur au moment de la création dans l’app ne pas être changé par voie aérienne.
React Native est similaire à Cordova. Ce n’est pas la même technologie d’affichage (native vs webview), mais les deux vous permettent de contrôler les fonctionnalités natives de javascript. Ils offrent tous deux un système de plug-in permettant aux développeurs d’ajouter facilement de nouvelles liaisons JS/natives.
PhoneGap est similaire à Expo. Ils essaient tous deux d’enrichir l’API brute de la plate-forme sous-jacente sur laquelle ils sont construits avec un ensemble prédéfini de plug-ins natifs supplémentaires. PhoneGap propose également un service de compilation et possède un client générique qui fonctionne tant que vous utilisez les plugins approuvés.
Comme vous pouvez le constater, Expo est un ensemble d’outils. À la fin, cela vous permet de développer, de partager et de publier facilement dans vos magasins vos projets mobiles. C'est assez similaire à l'expérience PhoneGap (mais beaucoup mieux et moins déroutant).
Je recommanderai définitivement Expo pour tout nouveau projet React Native, à l'exception de ces 2 cas:
EXPO CLI avantages: - 1. Pas besoin d'installer Android studio et Xcode pour commencer à créer une application mobile. 2. Aucune exigence de machine de configuration élevée pour le développement. 3. L’interface mobile vérifie facilement les appareils Android et l’iPhone à l’aide du balayage des codes à barres. Vous pourrez également vérifier quelques temps sur les simulateurs en ligne pour iPhone et Android. 4. développement rapide. Inconvénients: - 1. La dépendance native ne peut pas ajouter d'expo car le projet expo n'a pas de dossier ios ni Android, donc ici expo est limité. 2. Faire apk et ipa est difficile avec expo. React Native Cli
Avantages: - 1. Ajoutez facilement une dépendance native pour Android et ios car cette structure de projet contient des dossiers ios et Android. 2. Construire Apk et Ipa est facile plutôt que d’exposer. Remarque ": - React Native Cli est la bonne approche pour commencer à travailler sur le framework natif de react. Inconvénients: - 1. Un ordinateur avec une configuration élevée est requis. 2. Ajouter une dépendance un peu plus difficile mais bien. 3. Base requise connaissance de la structure des dossiers Android et des dossiers ios, mais en apprenant plus de choses.
Vous pouvez préférer n'importe quelle approche selon vos besoins.
Les réponses concernant les avantages et les inconvénients d’expo et de react-native-cli sont complètes. Je veux mentionner un autre point comme expérience personnelle. Expo contient par défaut de nombreux modules dans le projet et facilite son travail. Mais cela pose un gros problème en phase de production car les versions Android
et ios
construites ont une telle taille. Par exemple, si vous avez une seule page avec un 'Hello World'
, la taille du fichier apk
serait d'environ 19 MB
. Avoir un même projet dans react-native-cli donnera une application de la taille de 6 MB
.
Personnellement, je ne recommande pas d'utiliser expo si vous souhaitez développer une application commerciale.
Je tiens à noter ici que l’Expo utilise une version plus ancienne de react 16.5, ce qui vous interdirait d’utiliser la nouvelle fonctionnalité de hooks. Si vous décidez d’utiliser Expo, faites attention à vos contrôles de version. Les versions plus anciennes de say react-navigation devront être utilisées avec la version 16.5 si vous obtenez des erreurs étranges.