Je travaille à Expo!
Lorsque vous écrivez du code, Expo
vous écrivez du React Native
code. Expo
a deux pièces principales:
1) expo-cli
: un outil de développement pour créer des projets, consulter les journaux, ouvrir sur votre appareil, publier, etc.
2) Le Expo
client: une application sur votre téléphone qui vous permet d'ouvrir vos projets pendant que vous travaillez dessus, sans avoir à passer par XCode
ou Android Studio
, et permet également à d'autres de les voir! Et si vous le publiez via expo-cli
, les gens peuvent y accéder à tout moment via le Expo
client sur Android ou sur iOS s'ils sont connectés au même compte avec lequel ils ont été publiés. Enfin, nous permettons également de créer des applications autonomes afin que les gens n'aient pas à utiliser le Expo
client pour l'ouvrir, et vous pouvez distribuer sur l'App Store et Play Store si vous le souhaitez.
Il Expo
s'agit donc d'un ensemble d'outils construits sur / autour React Native
. Ces outils dépendent d'une croyance clé que nous détenons Expo
: il est possible de créer la plupart des applications sans jamais avoir besoin d'écrire du code natif, à condition que vous disposiez d'un ensemble complet d'API exposées Javascript
.
Ceci est important car avec React Native
vous, vous pouvez toujours passer au code natif. C'est incroyablement utile parfois, mais cela a un coût: vous devez envoyer à vos personnes vos binaires si vous voulez qu'ils les testent, quelqu'un à l'autre bout du monde ne peut pas simplement appuyer sur un lien pour l'ouvrir pendant que vous travaillez dessus et vous ne pouvez pas simplement le publier en un seul 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 Javascript
, cela ne devrait pas être nécessaire pour la plupart des applications. Nous visons donc à fournir cet ensemble complet d'API, puis à construire tous les outils impressionnants qui peuvent exister dans un monde où le runtime natif est partagé.
Cependant, si vous devez trouver que vous descendez absolument en natif, vous pouvez ExpoKit
continuer à utiliser les API natives qui Expo
vous donnent tout en ayant le même niveau de contrôle que dans tout projet natif. " ExpoKit
est une bibliothèque Objective-C et Java qui vous permet d'utiliser la Expo
plate - forme et votre Expo
projet existant dans le cadre d'un projet natif standard plus vaste." En savoir plus ici.
J'ai essayé de faire un résumé de la documentation et des réponses des employés de l'Expo:
React Native init:
Avantages :
Inconvénients :
Expo
Avantages :
Inconvénients :
J'espère pouvoir résumer les points les plus importants. N'hésitez pas à ajouter des points supplémentaires.
Sources: 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 (documentation officielle en général)
la source
La réponse de Brent Vatne est très bien mais je voudrais ajouter quelques détails.
Expo étend la surface API de React Native
React Native ne vous fournit pas toutes les API JS dont vous avez besoin, mais uniquement les fonctionnalités les plus primitives. Les développeurs React Native devraient utiliser Android Studio / XCode pour lier des bibliothèques natives supplémentaires. Expo vise à améliorer RN et à fournir toutes les API JS dont vous avez besoin pour les besoins les plus courants. Il s'agit essentiellement 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 RN et sont intégrées à ExpoKit.
Il est également important de noter que l'équipe d'Expo ne peut pas inclure chaque bibliothèque dans ExpoKit (ce qui peut créer une certaine frustration) car la taille de l'application Hello World augmenterait, car elle expédierait de nombreuses API qui ne seraient pas utilisées. dans la plupart des applications.
Expo fournit des mises à jour JS en direct
Comme d'autres systèmes (CodePush ...), Expo fournit un système pour mettre à jour votre application en direct. Cela signifie que vous téléchargez votre bundle JS sur un CDN et que les applications mobiles téléchargeront et utiliseront automatiquement le nouveau JS au prochain démarrage (sans demander de publication / révision dans les magasins).
Expo fournit un outil CLI pour télécharger / gérer les bundles 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.
Expo fournit un client générique
Le client Expo est un client générique qui permet de charger n'importe quelle application compatible avec Expo. Toutes les applications Expo partagent le même runtime natif (RN + ExpoKit), la seule différence est le JS que nous leur donnons. Les applications Expo que vous publiez dans les magasins d'applications ont votre URL de bundle JS codée en dur. Le client Expo est construit d'une manière spécifique afin que vous puissiez choisir à partir de quelle URL charger le JS, en scannant un QRCode ou en fournissant une URL.
Notez que ce client peut également charger des bundles JS à partir de localhost, et rendre votre expérience de développement plus facile: pas besoin de XCode ou Android Studio, et il devient beaucoup plus rapide de faire fonctionner votre premier Hello World sur le téléphone (de quelques heures à quelques minutes). Vous pouvez réellement développer sur un iPhone sans Mac et la configuration prend 2 minutes.
En fait, comme l'Expo SDK peut être mis à niveau, le client Expo inclut une couche de compatibilité pour pouvoir exécuter les 5 dernières versions du SDK.
Expo fournit un service de construction
Comme toutes les applications Expo partagent le même code natif, Expo est en mesure de créer facilement ces applications pour vous. Ils ont créé un service de création de cloud.
La principale chose qui différencie 2 applications construites par Expo est simplement l'URL codée en dur sur laquelle l'application est censée télécharger le bundle JS pour fonctionner.
Expo fait d'autres choses pour vous, comme fournir un moyen déclaratif de configurer les icônes d'application, les orientations, les autorisations, les clés api, vous aider à configurer les notifications push, les profils d'approvisionnement ... de nombreux paramètres doivent être codés en dur au moment de la construction dans l'application et peuvent pas être changé sur l'air.
Expo est de réagir Native ce que Phonegap est à Cordoue
React Native est similaire à Cordova. Ce n'est pas la même technologie de vue (native vs webview) mais les deux vous permettent de contrôler les fonctionnalités natives à partir de javascript, et les deux offrent un système de plugins afin que les développeurs puissent facilement ajouter de nouvelles liaisons JS / natives.
PhoneGap est similaire à Expo. Ils essaient tous les deux d'enrichir l'API brute de la plate-forme sous-jacente sur laquelle ils sont construits avec un ensemble prédéfini de plugins natifs supplémentaires. PhoneGap propose également un service de build et dispose d'un client générique qui fonctionne tant que vous utilisez les plugins approuvés.
Conclusion
Comme vous pouvez le voir, Expo est un ensemble d'outils. Au final, il permet de développer, partager et publier facilement dans les 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 greenfield React Native, à l'exception de ces 2 cas:
la source
Il est expliqué dans la documentation officielle de l'Expo
Quelle est la différence entre Expo et React Native?
la source
Expo XDE
console ou dans laexp start
sortie de commande de la console.expo start
vous montrera également une adresse IP sur votre hôte local, vous pouvez accéder au code QR deEXPO CLI
avantages:-
Les inconvénients:-
React Native Cli
Avantages:-
Note":- React Native cli is right approach to started work on react native framework.
Les inconvénients:-
Vous pouvez préférer n'importe quelle approche selon vos besoins.
la source
Je voudrais noter ici qu'Expo utilise une ancienne version de react 16.5 qui vous interdirait d'utiliser la nouvelle fonctionnalité de hooks. Si vous décidez de choisir Expo, n'oubliez pas de surveiller 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.
la source
expo update
fait un très bon travail pour obtenir les versions compatibles pour la plupart des packages gérés par Expo. Pour l'instant, je ne pense pas que cela met à jour React Navigation, mais cette bibliothèque est en fait sponsorisée par Expo. Personnellement, je rencontre rarement des problèmes de compatibilité entre React Navigation et Expo (je pense avoir rencontré quelques problèmes lors de l'utilisation des versions bêta). Cependant, vous pouvez voir plus de problèmes de compatibilité avec les packages non gérés par Expo.Les réponses sur les avantages et les inconvénients de expo et react-native-cli sont complètes. Je veux mentionner un autre point comme mon expérience personnelle. Expo contient de nombreux modules par défaut dans le projet et facilite son utilisation. Mais il y a un gros problème sur la phase de production parce que les versions construites
android
etios
ont une si grande taille. Par exemple , si vous avez une seule page avec'Hello World'
laapk
taille du fichier serait à peu près19 MB
. Avoir un même projet dans react-native-cli se traduira par une application de la taille de6 MB
.Donc, personnellement, je ne recommande pas d'utiliser expo si vous souhaitez développer une application commerciale.
la source
J'ai connu plus d'un an qui fonctionne avec expo Si la taille de l'application n'a pas d'importance pour vous, utilisez Expo car il est facile d'implémenter Map, Push plus facile que React-native mais à la fin du projet si vous souhaitez publier dans Google Play ou dans un autre magasin, vous avez du mal à supprimer certaines autorisations dans votre APK React natif, vous pouvez tout changer, mais pour importer une bibliothèque telle qu'une notification push ou la carte a également besoin de quelques défis car vous devez ajouter ces bibliothèques manuellement à projets Android et iOS
la source
expo est une chaîne d'outils construite autour de React Native pour vous aider à démarrer rapidement une application. Il fournit un ensemble d'outils qui simplifient le développement et les tests de l'application React Native et de l'interface et des services qui sont généralement disponibles dans les composants React Native natifs tiers. Avec Expo, vous pouvez tous les trouver dans Expo SDK.
la source