Introduzione

Expo è un framework e una piattaforma per applicazioni React universali. È un insieme di strumenti e servizi costruiti attorno a React Native e piattaforme native che ti aiutano a sviluppare, costruire, distribuire e iterare rapidamente su iOS, Android e app Web dalla stessa base di codice JavaScript/TypeScript.

Flusso di lavoro

I due approcci alla costruzione di applicazioni con gli strumenti di Expo sono chiamati flussi di lavoro "managed" e "bare".

  • Con il flusso di lavoro managed scrivi solo strumenti e servizi JavaScript/TypeScript ed Expo si occupa del resto per te.
  • Nel flusso di lavoro bare hai il pieno controllo su ogni aspetto del progetto nativo e gli strumenti di Expo non possono essere altrettanto utili.

Flusso di lavoro managed (gestito)

Le app sono costruite con il flusso di lavoro gestito utilizzando expo-cli, il client Expo sul tuo dispositivo mobile e altri servizi come: notifiche push, build service, e over-the-air (OTA) updates. Expo cerca di gestire il più possibile la complessità della creazione di app, motivo per cui viene definito flusso di lavoro managed.

Uno sviluppatore che utilizza il flusso di lavoro managed non ha bisogno di utilizzare Xcode o Android Studio, scrive semplicemente codice JavaScript e gestisce la configurazione per cose come l'icona dell'app e la schermata iniziale tramite app.json. Expo SDK espone un set sempre più completo di API che ti danno il potere di accedere alle funzionalità del dispositivo come la fotocamera, l'autenticazione biometrica, il file system, l'ottica e così via. Mentre puoi fare molto con il flusso di lavoro managed, non puoi fare tutto con esso, quindi potresti incontrare delle limitazioni.

Cosa succede se mi imbatto in una limitazione?

Se arrivi al punto in cui devi avere il pieno controllo del codice nativo nella tua app, puoi "espellere" (eject) (eseguire expo eject nel tuo progetto) ed expo-cli esporrà tutti i progetti e la configurazione nativi sottostanti. Quindi utilizzerai il flusso di lavoro bare.

Limitazioni del flusso di lavoro managed

Il flusso di lavoro non sarà adatto per ogni possibile app. Ci sono molti casi in cui i suoi attuali vincoli potrebbero non essere appropriati per il tuo progetto. Di seguito è riportato un elenco di limitazioni di cui siamo a conoscenza che possono influenzare la tua decisione sull'adeguatezza del flusso di lavoro gestito al tuo progetto.

Non tutte le API iOS e Android sono disponibili

Sono supportate molte API dei dispositivi, ma non tutte le API iOS e Android sono già disponibili: ad esempio manca il supporto per il Bluetooth, oppure per il WebRTC. Riguardo gli acquisti in-app e l'integrazione di Apple e Google Pay sono in corso di sviluppo. Vengono aggiunte costantemente nuove API, se però non è disponibile qualcosa di cui hai bisogno ora, puoi utilizzare il flusso di lavoro bare o seguire il blog ufficiale per vedere le note di rilascio degli aggiornamenti SDK.

L'SDK non supporta tutti i tipi di esecuzione del codice in background

L'esecuzione in background è la possibilità di eseguire il codice quando l'app non è in primo piano o il dispositivo è in sospensione. Expo supporta la geolocalizzazione in background (incluso il geofencing) e il recupero in background, ma non supporta ancora l'audio in background con i controlli di riproduzione del sistema operativo e non è possibile gestire le notifiche push in background. Si tratta di un lavoro in corso di sviluppo.

Dimensioni dell'applicazione

Se devi mantenere le dimensioni della tua app estremamente snelle, il flusso di lavoro managed potrebbe non essere la scelta migliore

Le dimensioni di un'app Expo gestita su iOS sono di circa 20 MB (download) e Android di circa 15 MB. Questo perché "managed" include un sacco di API indipendentemente dal fatto che tu le stia utilizzando o meno: ciò ti consente di inviare aggiornamenti over-the-air per utilizzare nuove API, ma ha un costo di dimensione binaria. Alcune delle API incluse sono legate a servizi che potresti non utilizzare, ad esempio l'SDK per dispositivi mobili di Facebook è incluso per supportare l'accesso di Facebook e gli annunci di Facebook, insieme all'SDK di Google Mobile per motivi simili. Lo renderemo personalizzabile in futuro, in modo da poter ridurre le dimensioni dei file binari. Ulteriori informazioni sulla gestione delle dimensioni della tua app qui.

Le librerie native da integrare con i servizi proprietari non sono generalmente incluse nell'SDK

In relazione al punto precedente, in genere Expo evita di aggiungere moduli nativi all'SDK se sono collegati a servizi proprietari esterni. In questi casi gli sviluppatori potranno utilizzare il flusso di lavoro bare espellendo il proprio progetto.

L'unico servizio di notifica push supportato è il servizio di notifica di Expo

Se si desidera utilizzare un altro servizio di notifica push, ad esempio OneSignal, anziché il servizio/API di notifica push di Expo , è necessario utilizzare il flusso di lavoro bare.

Le versioni minime del sistema operativo supportate sono Android 5+ e iOS 10+

Se è necessario supportare versioni precedenti, non sarà possibile utilizzare il flusso di lavoro managed.

A volte le build gratuite possono essere messe in coda

Puoi facilmente creare la tua app per l'invio agli Store senza nemmeno installare Xcode o Android Studio utilizzando il servizio di build autonomo gratuito, ma a volte ha una coda a seconda di quante altre persone stanno costruendo un binario in quel momento. Puoi avere accesso a un'infrastruttura di build dedicata con un piano "prioritario" oppure, se preferisci, puoi eseguire le build sul tuo CI.

Expo è in sviluppo attivamente per creare soluzioni a tutte le limitazioni sopra elencate.

Flusso di lavoro bare

Nel flusso di lavoro bare lo sviluppatore ha il controllo completo, insieme alla complessità che ne deriva. È possibile utilizzare la maggior parte delle API in Expo SDK, ma il servizio di creazione e la configurazione semplice con app.json non sono ancora supportati. Puoi fare riferimento a tutorial e guide orientati verso app native iOS e Android e React Native per alternative.

Limiti del flusso di lavoro bare (non gestito)

Nel flusso di lavoro bare hai pieno accesso ai progetti nativi sottostanti e a qualsiasi codice nativo. Tutto ciò che puoi fare in un progetto nativo è possibile farlo in Expo con il flusso di lavoro bare. Il seguente elenco è quindi specificamente orientato verso le limitazioni esistenti nell'uso degli strumenti e dei servizi di Expo nel flusso di lavoro bare.

Il servizio di compilazione funziona solo nel flusso di lavoro managed

Per creare i binari delle tue app per la distribuzione su Apple App Store e Google Play Store dovrai seguire gli stessi passaggi che faresti in qualsiasi progetto nativo, il servizio di costruzione di Expo non può gestirlo per te. Expo sta lavorando per fornire il supporto del flusso di lavoro bare al servizio di compilazione nel prossimo futuro.

La configurazione deve essere eseguita su ciascun progetto nativo anziché una volta sola con app.json

La configurazione delle icone delle app, della schermata di avvio e così via deve essere configurata nei progetti nativi per ciascuna piattaforma utilizzando gli strumenti nativi standard, anziché una volta sola utilizzando un semplice oggetto JSON.

Quale flusso di lavoro scegliere

  • Expo non ti blocca mai, puoi "espellere" in qualsiasi momento e il tuo progetto sarà solo un tipico progetto nativo con i pacchetti React Native ed Expo SDK installato e configurato .
  • Se sei nuovo allo sviluppo mobile o nuovo allo sviluppo in generale, ti consigliamo di utilizzare il flusso di lavoro managed. C'è un'enorme quantità di complessità che si accompagna alla toolchain di sviluppo nativo e il flusso di lavoro managed consente di gestire tale complessità solo quando assolutamente necessario.
  • Se sei più esperto, inoltre, non è male avviare ogni nuovo progetto con il flusso di lavoro managed e "espellere" solo se necessario.

In sintesi, utilizzare il flusso di lavoro bare quando è necessario a causa di limitazioni, altrimenti utilizzare il flusso di lavoro managed ed espellere il progetto se necessario.

Confronto del flusso di lavoro

CaratteristicheManaged workflowBare workflow
Sviluppo app con solo JavaScript/TypeScript
Expo per creare build di iOS e Android⏱ (in sviluppo)
Servizio Expo push notification
Aggiornamenti Expo
Develop app con il client Expo
Accesso all'SDK Expo
Codice nativo personalizzato e gestione di dipendenze native
Develop in Xcode e Android Studio

Conclusione

In questo tutorial abbiamo fatto una breve panoramica sul Framework Expo.

Leggere questo tutorial per installare Expo su Linux: Come installare il framework Expo per React su Linux.

Qui puoi trovare tutti gli articoli dedicati ad Expo:

Guide tutorial e consigli sull’utilizzo del framework Expo
Expo è un framework e una piattaforma per applicazioni React universali. È un insieme di strumenti e servizi costruiti attorno a React Native e piattaforme.