Dal sito web di Expo
Expo consente agli sviluppatori Web di creare app veramente native che funzionano sia su iOS che su Android scrivendole una sola volta in JavaScript.
Non è questo ciò che React Native fa? Qual è la differenza?
Dal sito web di Expo
Expo consente agli sviluppatori Web di creare app veramente native che funzionano sia su iOS che su Android scrivendole una sola volta in JavaScript.
Non è questo ciò che React Native fa? Qual è la differenza?
Risposte:
Lavoro a Expo!
Quando scrivi il codice Expo
, scrivi il React Native
codice. Expo
ha due pezzi principali:
1) expo-cli
: uno strumento di sviluppo per la creazione di progetti, la visualizzazione di registri, l'apertura sul dispositivo, la pubblicazione, ecc.
2) Il Expo
client: un'app sul tuo telefono che ti consente di aprire i tuoi progetti mentre ci lavori, senza bisogno di passare attraverso XCode
o Android Studio
, e permette anche ad altre persone di vederli! E se lo pubblichi attraverso expo-cli
, le persone possono accedervi in qualsiasi momento tramite il Expo
client su Android o iOS se hanno effettuato l'accesso allo stesso account con cui è stato pubblicato. Infine, consentiamo anche di creare app autonome in modo che le persone non debbano utilizzare il Expo
client per aprirlo e, se lo desideri, puoi distribuirlo sull'app store e giocare al Play Store.
Quindi, Expo
è un insieme di strumenti costruito sopra / intornoReact Native
. Questi strumenti dipendono da una convinzione chiave a cui teniamo Expo
: è possibile costruire la maggior parte delle app senza mai dover scrivere codice nativo, a condizione che tu abbia una serie completa di API esposte aJavascript
.
Questo è importante perché con React Native
te puoi sempre passare al codice nativo. Questo è incredibilmente utile a volte ma ha un costo: devi inviare alle persone i tuoi file binari se vuoi che li testino, qualcuno dall'altra parte del mondo non può semplicemente toccare un link per aprirlo mentre lavori su di esso e non puoi semplicemente pubblicarlo con un clic affinché qualcuno possa accedervi in modo simile a come faresti in un browser.
Con Expo
, ti suggeriamo di provare a evitare di passare al codice nativo, se puoi. Come ho detto sopra, pensiamo che con un set completo di API disponibili perJavascript
questo non dovrebbe essere necessario per la maggior parte delle app. Quindi, miriamo a fornire questo set completo di API e quindi creare tutti i fantastici strumenti che possono esistere in un mondo in cui è condiviso il runtime nativo.
Tuttavia, se devi trovare assolutamente il menu a discesa nativo, puoi utilizzare ExpoKit
per continuare a utilizzare le API native che Expo
ti offrono pur avendo lo stesso livello di controllo che avresti in qualsiasi progetto nativo. " ExpoKit
è una libreria Objective-C e Java che consente di utilizzare la Expo
piattaforma e il Expo
progetto esistente come parte di un progetto nativo standard più ampio." Leggi di più qui.
Ho provato a fare un riassunto della documentazione e delle risposte dei dipendenti di Expo:
React Native init:
Vantaggi :
Svantaggi :
Expo
Vantaggi :
Svantaggi :
Spero di poter riassumere i punti più importanti. Non esitate a aggiungere punti aggiuntivi.
Fonti: https://code.tutsplus.com/tutorials/detaching-expo-apps-to-expokit-concepts--cms-30661 https://github.com/react-community/create-react-native-app/ numeri / 516 # issuecomment-373629114 https://docs.expo.io/versions/latest/guides/detach.html (documentazione ufficiale in generale)
La risposta di Brent Vatne va bene, ma vorrei aggiungere alcuni dettagli.
React Native non ti offre tutte le API JS necessarie, ma solo le funzionalità più primitive. Gli sviluppatori React Native dovrebbero utilizzare Android Studio / XCode per collegare ulteriori librerie native. Expo mira a migliorare RN e fornire tutte le API JS necessarie per le esigenze più comuni. È fondamentalmente un insieme di librerie native di qualità ben definite già confezionate per te in un'unica libreria: ExpoKit. A volte queste librerie sono già esistenti nel mondo RN e integrate in ExpoKit.
È anche importante notare che il team di Expo non può includere tutte le librerie disponibili in ExpoKit (il che può creare qualche frustrazione) perché le dimensioni dell'app Hello World aumenterebbero, in quanto spedirebbero molte API che non verrebbero utilizzate nella maggior parte delle app.
Come altri sistemi (CodePush ...), Expo fornisce un sistema per aggiornare la tua app via etere. Ciò significa che carichi il tuo pacchetto JS su una CDN e le app mobili scaricheranno e utilizzeranno automaticamente il nuovo JS al prossimo avvio (senza richiedere una pubblicazione / recensione dagli store).
Expo fornisce uno strumento CLI per caricare / gestire i bundle JS sulla loro rete CDN. Per lo sviluppo puoi anche scegliere di diventare la CDN e ospitare il bundle JS su localhost. E XDE è solo un visual wrapper sulla CLI.
Il client Expo è un client generico che consente di caricare qualsiasi app compatibile con Expo. Tutte le app di Expo condividono esattamente lo stesso runtime nativo (RN + ExpoKit), l'unica differenza è il JS che offriamo. Le app Expo che pubblichi negli app store hanno l'URL del tuo bundle JS codificato al suo interno. Il client Expo viene creato in un modo specifico in modo da poter scegliere da quale url caricare JS, scansionando un QRCode o fornendo un url.
Nota che questo client può anche caricare bundle JS da localhost e rendere più semplice la tua esperienza di sviluppo: non è necessario XCode o Android Studio e diventa molto più veloce per far funzionare il tuo primo Hello World sul telefono (da ore a minuti). Puoi effettivamente svilupparti su un iPhone senza Mac e l'installazione richiede 2 minuti.
In realtà, poiché l'Expo SDK può essere aggiornato, il client Expo include un livello di compatibilità che consente di eseguire le ultime 5 versioni dell'SDK.
Poiché tutte le app di Expo condividono lo stesso codice nativo, Expo è in grado di creare facilmente queste app per te. Hanno creato un servizio di cloud build.
La cosa principale che differenzia 2 app create da Expo è solo l'URL codificato su cui si suppone che l'app scarichi il bundle JS per l'esecuzione.
Expo fa alcune altre cose per te, come fornire un modo dichiarativo per configurare icone dell'app, orientamenti, autorizzazioni, chiavi API, aiutarti a impostare notifiche push, profili di provisioning ... molte impostazioni devono essere codificate al momento della compilazione nell'app e possono essere cambiato via etere.
React Native è Cordova simile. Non è la stessa tecnologia di visualizzazione (native vs webview) ma entrambe consentono di controllare le funzionalità native da javascript ed entrambe offrono un sistema di plugin in modo che gli sviluppatori possano aggiungere facilmente nuovi collegamenti JS / nativi.
PhoneGap è simile a Expo. Entrambi cercano di arricchire l'API non elaborata della piattaforma sottostante su cui sono basati con un set predefinito di plug-in nativi aggiuntivi. PhoneGap offre anche un servizio di build e un client generico che funziona fintanto che si utilizzano i plug-in approvati.
Come puoi vedere, Expo è un insieme di strumenti. Alla fine consente di sviluppare, condividere e pubblicare facilmente nei negozi i tuoi progetti mobili. È abbastanza simile all'esperienza PhoneGap (ma molto meglio e meno confusa).
Raccomanderò definitivamente Expo per qualsiasi nuovo progetto greenfield di React Native, ad eccezione di questi 2 casi:
È spiegato nella documentazione ufficiale di Expo
Qual è la differenza tra Expo e React Native?
Expo è un po 'come Rails for React Native. Molte cose sono impostate per te, quindi è più rapido iniziare e sulla strada giusta.
Con Expo, non hai bisogno di Xcode o Android Studio. Devi solo scrivere JavaScript usando qualunque editor di testo tu sia a tuo agio (Atom, vim, emacs, Sublime, VS Code, qualunque cosa tu voglia). Puoi eseguire XDE (il nostro software desktop) su Mac, Windows e Linux.
Ecco alcune delle cose che Expo ti offre fin da subito e che funzionano subito:
Supporto per iOS e Android
Puoi usare app scritte in Expo sia su iOS che su Android immediatamente. Non è necessario passare attraverso un processo di generazione separato per ognuno. Apri qualsiasi app Expo nell'app Expo Client dall'App Store su iOS o Android (o in un simulatore o emulatore sul tuo computer).
Notifiche push
Le notifiche push funzionano immediatamente sia su iOS che su Android, utilizzando un'unica API unificata. Non è necessario impostare APNS e GCM / FCM o configurare ZeroPush o qualcosa del genere. Pensiamo di averlo reso tanto semplice come può essere adesso.
Accesso a Facebook
Questo può richiedere molto tempo per essere configurato correttamente, ma dovresti riuscire a farlo funzionare in 10 minuti o meno su Expo.
Aggiornamento istantaneo
Tutte le app di Expo possono essere aggiornate in pochi secondi facendo semplicemente clic su Pubblica in XDE. Non devi impostare nulla; funziona così. Se non si utilizza Expo, utilizzare Microsoft Code Push o rotolare la propria soluzione per questo problema
Gestione delle risorse
Immagini, video, caratteri, ecc. Sono tutti distribuiti dinamicamente su Internet con Expo. Ciò significa che funzionano con un aggiornamento istantaneo e possono essere modificati al volo. Il sistema di gestione delle risorse integrato in Expo si occupa di caricare tutte le risorse nel tuo repository su una CDN in modo che vengano caricate rapidamente per chiunque.
Senza Expo, la cosa normale da fare è raggruppare le risorse nella tua app, il che significa che non puoi modificarle. O dovresti riuscire a mettere le tue risorse su un CDN o simili da solo.
Aggiornamento più semplice alle nuove versioni native di React
Facciamo nuove uscite di Expo ogni poche settimane. Puoi rimanere su una vecchia versione di React Native se vuoi, o passare a una nuova versione, senza preoccuparti di ricostruire il file binario dell'app. Puoi preoccuparti di aggiornare JavaScript nel tuo tempo libero.
Ma nessun modulo nativo ...
La cosa più limitante di Expo è che non puoi aggiungere i tuoi moduli nativi senza staccare e usare ExpoKit.
Expo XDE
console o exp start
nell'output del comando della console.
expo start
ti mostrerà anche un indirizzo IP sul tuo localhost da cui puoi accedere al codice QR
CLI EXPO
professionisti:-
1. No need to install Android studio and Xcode for start building mobile app.
2. No requirement of high configuration machine for development.
3. Mobile ui easily check on both devices android and iphone using barcode scanning.and some time you can check on online iphone and android simulators.
4. fast development.
Contro: -
1. Native dependency can not add on expo because expo project don't have ios and android folder so here expo is bounded.
2. Making apk and ipa are to difficult using expo.
3. Size of the apk/ipa is huge
React Native Cli
Professionisti:-
1. Easily add native dependency for android and ios because this project structure have ios and android folder.
2. Apk and ipa build making is easy rather than expo.
Note":- React Native cli is right approach to started work on react native framework.
Contro: -
1. High configuration machine is require.
2. Adding dependency some time more difficult but good.
3. Required basic knowledge of android folder structure and ios folder structure but from this learn more things.
Puoi preferire qualsiasi approccio in base alle tue esigenze.
Vorrei prendere nota qui che Expo sta usando una versione precedente di reagire 16.5 Che vi proibirebbe di usare la nuova funzione hook. Se decidi di andare con Expo, fai attenzione a guardare i controlli della tua versione. Le versioni precedenti di dicono di reagire alla navigazione dovranno essere utilizzate con la versione 16.5 se si verificano strani errori.
expo update
fa un ottimo lavoro nell'ottenere le versioni compatibili per la maggior parte dei pacchetti gestiti da Expo. A partire da ora, non credo che aggiorni React Navigation, ma quella biblioteca è in realtà sponsorizzata da Expo. Personalmente, raramente mi imbatto in problemi di compatibilità tra React Navigation ed Expo (penso di aver riscontrato un paio di problemi durante l'utilizzo delle versioni beta). Tuttavia, potresti riscontrare ulteriori problemi di compatibilità con i pacchetti non gestiti da Expo.
Le risposte su vantaggi e svantaggi di expo e reagire-native-cli sono complete. Voglio menzionare un altro punto come esperienza personale. Expo contiene molti moduli per impostazione predefinita nel progetto e semplifica il lavoro con esso. Ma ha un grosso problema in fase di produzione perché il costruito android
e le ios
versioni hanno dimensioni così grandi. Ad esempio, se hai una singola pagina con una dimensione 'Hello World'
del apk
file sarebbe circa 19 MB
. Avere uno stesso progetto in React-native-cli si tradurrà in un'app delle dimensioni di6 MB
.
Quindi personalmente non consiglio di usare Expo se vuoi sviluppare un'app commerciale.
Ho sperimentato più di un anno che funziona con expo Se The Size dell'app non è importante per te usa Expo perché è facile implementare Map, Push più semplice di React-native ma alla fine del progetto se vuoi pubblicare app in Google Play o in un altro negozio hai una sfida per rimuovere alcune autorizzazioni nel tuo APK React-native puoi cambiare tutto ma per importare alcune librerie come la notifica push o la mappa richiede anche alcune sfide perché devi aggiungere queste librerie manualmente a progetti Android e iOS
expo è una toolchain costruita attorno a React Native per aiutarti a avviare rapidamente un'app. Fornisce una serie di strumenti che semplificano lo sviluppo e il test dell'app React Native e dell'interfaccia e dei servizi che sono normalmente disponibili nei componenti nativi di React Native di terze parti. Con Expo puoi trovarli tutti in Expo SDK.