Table of Contents
Comprendere Expo nell'Ecosistema Nativo React
Le app React Native sono costruite con JavaScript ma si basano su moduli nativi per funzioni come la fotocamera, Bluetooth o GPS. Tradizionalmente, la creazione di questi moduli nativi richiedeva Android Studio, Xcode, Gradle e Coco APIPods, una curva di apprendimento ripida per i nuovi arrivati.
La distinzione chiave è tra i flussi di lavoro e bare] all'interno di Expo. I principianti iniziano quasi sempre con il flusso di lavoro gestito, dove Expo gestisce la configurazione nativa.
Perché Expo Matters per principianti (e oltre)
Prima di Expo, molti sviluppatori hanno trascorso giorni solo ottenendo un ambiente React Native per compilare. I punti di dolore comuni includevano errori di versione tra SDK Android, collegando manualmente le librerie native e debug errori di costruzione criptico.
- Impostazione nativa di Zero[: Non c'è bisogno di installare Android Studio o Xcode per iniziare.
- SDK unificato[: Tutte le librerie di Expo sono state riprodotte insieme. Non dovete preoccuparvi della biblioteca Un essere incompatibili con la biblioteca B.
- Aggiornamenti OTA (OTA)[[: Premere JavaScript cambia direttamente agli utenti senza passare attraverso le recensioni dell'app store.
- Instant sharing[[]]: Generare un codice QR per condividere la tua app in corso con compagni di squadra o clienti.
- Comunità e documentazione forti[[]: I documenti ufficiali di Expo sono tra i migliori nell’ecosistema React Native.
Per tali ragioni, Expo è ora il punto di partenza consigliato dal team React Native stesso. I principianti ufficiali React Native ] guidano i principianti ad utilizzare Expo se sono nuovi per lo sviluppo mobile.
Impostare il vostro ambiente di Expo
Prerequisiti
- Node.js[] (versione 16 o successiva) – scaricare da nodejs.org.
- editor di codice[]] (il codice VS è altamente raccomandato).
- dispositivo mobile[]] con l'applicazione Expo Go installata ([[]iOS[] o Android[]]]]).
- Expo account[] per la pubblicazione e la condivisione – Iscriviti a expo.dev.
Installazione di Expo CLI
Expo CLI è lo strumento di riga di comando che si utilizza per creare, eseguire e costruire applicazioni.
npm install -g expo-cli
Se si utilizza Yarn, è possibile eseguire ]. Verificare l'installazione con []. Si noti che a partire dal 2024, Expo si sta spostando verso come starter predefinito. Mentre ] funziona ancora, si consiglia di utilizzare il metodo più recente:
npx create-expo-app MyFirstApp --template blank
Questo crea un progetto minimale con l'ultima versione di Expo SDK e il supporto integrato per TypeScript se lo si desidera.
Esplorazione della struttura del progetto
Once your project is created, open it in your editor. Key files and directories:
- App.js[] (o App.tsx) – il punto di ingresso della tua app. Tutto ciò che rendi inizia qui.
- package.json[[] – elenca le dipendenze (riagire, reagire-nativo, expo e qualsiasi modulo Expo installato).
- app.json[[] – file di configurazione per il tuo progetto Expo (nome app, icona, schermo splash, autorizzazioni, ecc.).
- node modules[[]] – contiene tutti i pacchetti installati.
- .expo[] – Stato locale per Expo, non impegnatevi a controllare la versione.
La bellezza di Expo è che non si vedrà android/ o ios/ cartelle a meno che non si esegue più tardi. Tutto è gestito attraverso l'Expo SDK.
Eseguire la tua App per la prima volta
Navigare nella directory del progetto:
cd MyFirstApp
Avviare il server di sviluppo:
npx expo start
Importante[]: Su iOS, utilizzare l'app Fotocamera predefinita; su Android, utilizzare l'app Expo Go per la scansione. L'applicazione si carica sul dispositivo e tutte le modifiche che si salva nel vostro editor di codice rifletteranno immediatamente (hot reloading). È inoltre possibile utilizzare un emulatore Android/iOS sul computer impostato.
Risoluzione dei problemi Problemi comuni di avvio
- Problemi di connessione[[]: Assicurare che il telefono e il computer siano sulla stessa rete Wi-Fi. Se ciò non funziona, utilizzare [ modalità premendo nel terminale Expo CLI. Questo funziona anche su diverse reti.
- L'app Expo Go mostra “Impossibile trovare un'app”[: Questo significa che di solito il server non è completamente iniziato. Attendere che i registri dicano “Metro bundler pronto.” Quindi la scansione di nuovo.
- Bundler bloccato[: Eliminare la cartella e provare per cancellare la cache.
Costruire il primo schermo: un esempio pratico
Creare una semplice schermata con un pulsante che mostra un avviso. Sostituisci il contenuto di con:
import React from 'react';
import { View, Text, Button, Alert, StyleSheet } from 'react-native';
export default function App() {
const showAlert = () => {
Alert.alert('Hello!', 'You clicked the button.');
};
return (
<View style={styles.container}>
<Text style={styles.title}>Welcome to Expo!</Text>
<Button title="Click Me" onPress={showAlert} />
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#f0f0f0',
},
title: {
fontSize: 24,
marginBottom: 20,
},
});
Salvare il file. Il dispositivo deve mostrare istantaneamente lo schermo. Premere il pulsante attiva l'avviso nativo. Notare che non hai scritto alcun codice Java/Kotlin o Swift—Expo ha gestito il collegamento.
Aggiungere la navigazione con Expo Router
La maggior parte delle applicazioni hanno più schermi. Expo Router[] è la libreria di navigazione consigliata perché utilizza il routing basato su file (simile a Next.js). Supporta il collegamento profondo, schede, stack e modals proprio fuori dalla scatola.
Installare Expo Router
npx expo install expo-router react-native-safe-area-context react-native-screens expo-linking expo-constants
Quindi, regolare il per impostare il [ punto di ingresso a ]. Creare una directory nella vostra radice di progetto.
app/
index.js
about.js
_layout.js (optional, for shared layout)
:
import { Link } from 'expo-router';
import { View, Text } from 'react-native';
export default function Home() {
return (
<View>
<Text>Home Screen</Text>
<Link href="/about">Go to About</Link>
</View>
);
}
Quando l'utente tocca il link, l'applicazione naviga a [] senza alcuna configurazione. Questo modello scala a centinaia di schermi ed è molto più facile rispetto alle tradizionali impostazioni di React Navigation.
Caratteristiche del dispositivo di accesso con Expo SDK
Expo fornisce oltre 50 moduli per la funzionalità del dispositivo. Alcuni di quelli comunemente utilizzati:
Macchina fotografica
npx expo install expo-camera
È possibile richiedere autorizzazioni, scattare foto e registrare video. Esempio di utilizzo:
import { Camera } from 'expo-camera';
// ... request permission with Camera.requestCameraPermissionsAsync()
Location
npx expo install expo-location
Ottieni la posizione corrente dell'utente, guarda le modifiche della posizione o gli indirizzi geocode.
Notifiche
npx expo install expo-notifications
L'Expo fornisce anche un servizio di notifica push, quindi non è necessario un backend personalizzato per l'invio di gettoni.
Sistema file
npx expo install expo-file-system
Leggere, scrivere e gestire i file sul dispositivo. Utile per la memorizzazione delle immagini o il download dei contenuti.
Poiché questi moduli sono già collegati nel flusso di lavoro gestito da Expo, è possibile iniziare a utilizzarli immediatamente dopo l'installazione del pacchetto npm.
Debug e Ispezione della tua App
Quando si esegue [], il bundler Metro fornisce un menu di sviluppo. Sul dispositivo, agitare (o utilizzare il menu di debug su schermo su Android) per accedere alle opzioni:
- Ricarica] – ricarica il bundle JavaScript.
- Ispettore aperto[] – apre React DevTools in un browser per l'ispettore dei componenti.
- Scegli il debugging JS remoto[[] – consente di debug in Chrome DevTools (è possibile impostare i punti di rottura nel JavaScript).
- Mostra Ispettore Element[] – tocca gli elementi dell'interfaccia utente per vedere i loro oggetti e stili.
Per le richieste di rete, è possibile utilizzare strumenti come []React Native Debugger[[] o l'ispettore di rete integrato in Chrome DevTools quando il debugging remoto è acceso. Inoltre, i registri di Expo appaiono nel terminale in cui è stato avviato il server, mostrando tracce stack e uscita console.log.
Utilizzo di Flipper con Expo
Se si preferisce il debugger Flipper di Facebook, è possibile configurare il flusso di lavoro nudo di Expo per supportarlo, ma per il flusso di lavoro gestito, gli strumenti incorporati sono di solito sufficienti. Molti sviluppatori si affidano a I log di sviluppatori di Expo e ]]React DevTools per il 90% dei compiti di debugging.
Gestione dello Stato in un'App Expo
Le app di Expo sono React Native apps, quindi la gestione dello stato funziona esattamente la stessa.
- React Context[] e useReducer[]] per lo stato semplice e moderatamente complesso.
- Zustand[] o Jotai] per una biblioteca di stato leggera e senza caldaia.
- Redux Toolkit[] per applicazioni su larga scala con molte fette di stato collegate.
Per i principianti, a partire dai ganci integrati di React è consigliato l’Expo, che può sempre migrare a una soluzione più sofisticata in seguito.
Esempio con il contesto reagito:
import { createContext, useContext, useState } from 'react';
const ThemeContext = createContext();
export function ThemeProvider({ children }) {
const [theme, setTheme] = useState('light');
return (
<ThemeContext.Provider value={{ theme, setTheme }}>
{children}
</ThemeContext.Provider>
);
}
export const useTheme = () => useContext(ThemeContext);
Testare la tua App
Expo supporta Jest fuori dalla scatola. Eseguire e configurare Jest in package.json. È possibile scrivere test di unità per i componenti e le istantanee. Per i test end-to-end, Detox] funziona bene ma richiede build native. Per il flusso di lavoro gestito, prendere in considerazione UMaestro tool Expo]
Esempio di un semplice test per il componente del pulsante:
import React from 'react';
import { render, fireEvent } from '@testing-library/react-native';
import App from '../App';
test('button shows alert', () => {
const { getByText } = render(<App />);
fireEvent.press(getByText('Click Me'));
// Assert that Alert was called (use jest.spyOn)
});
Costruire e pubblicare la tua App
Una volta che la tua app è pronta, vorrai pubblicarla all'App Store e a Google Play. Expo semplifica questa operazione con i servizi di cloud building.
Servizi di applicazione Expo (EAS)
EAS Build crea binari nativi pronti alla produzione senza dover installare Xcode o Android Studio.
- :
- Configurare con profili di costruzione (sviluppo, anteprima, produzione).
- o
EAS costruisce la tua app nel cloud e restituisce un file .ipa o .apk. Puoi quindi inviare ai negozi usando .
Aggiornamenti over-the-Air
Configurare un canale in app.json ed eseguire ] (o utilizzare EAS Update). L'app controlla gli aggiornamenti sul lancio e scarica il pacchetto più recente. Questo è un game-changer per la fissaggio dei bug rapidamente.
Esempio di app.json aggiornamento configurazione:
{
"expo": {
"updates": {
"url": "https://u.expo.dev/YOUR_PROJECT_ID",
"enabled": true
}
}
}
Limitazioni del flusso di lavoro gestito
Mentre Expo è potente, ci sono scenari in cui potrebbe essere necessario espellere un flusso di lavoro nudo:
- I moduli nativi personalizzati[] non sono disponibili in Expo SDK (ad esempio, una nuova libreria Bluetooth che non è stata avvolta).
- I compiti di Background[[] che devono essere eseguiti indefinitamente (Expo Go e le applicazioni gestite hanno limitazioni sull'esecuzione di sfondo).
- Personalizzazione di notifica di alta qualità[[]] oltre a ciò che offre Expo (ad esempio, suoni di notifica personalizzati o supporti ricchi).
- Le grandi dimensioni dei file[] con alcune librerie native (le applicazioni gestite includono tutte le applicazioni di Expo SDK, che aggiunge ~20MB).
- Deve eseguire il codice prima dell'inizializzazione delle app[[] (le applicazioni gestite hanno un punto di ingresso fisso).
Per fortuna, è possibile “eject” (in realtà eseguire [[]]]) in qualsiasi momento. Questo genera le cartelle [ e [[], permettendo di personalizzare il codice nativo. Una volta fatto, è possibile continuare a utilizzare gli strumenti di Expo, ma perdere la convenienza di anteprima istantanea con Expo Go. Tuttavia, è ancora possibile utilizzare gli aggiornamenti EAS Build e OTA.
Migliori Pratiche per lo Sviluppo di Expo
Mantenere aggiornato il tuo Expo SDK
L'aggiornamento è relativamente indolore: eseguire e correggere eventuali cambiamenti di rottura. Rimanere corrente assicura di avere le ultime API e patch di sicurezza.
Utilizzare TypeScript dall'inizio
Quando si esegue []], scegliere il modello TypeScript. Prende molti bug in anticipo e migliora l'autocompleto IDE.
Ottimizzare i beni di immagine
Usa per comprimere le immagini per la tua app. Inoltre, sfrutta per il caricamento delle immagini performanti con caching e segnaposto.
Leva la Comunità di Expo
I server Discord, forum e discussioni GitHub sono estremamente attivi. Molti problemi comuni sono stati risolti. Prima di scrivere codice personalizzato, cercare Documentazione Expo] o ricette della comunità.
Piano per i requisiti di App Store
Persino con Expo, è necessario rispettare le policy di Apple e Google. Assicurare che la tua app abbia manifesti sulla privacy, icone corrette e schermi di schizzi.
Pitfalls comune e come evitare di loro
- Per installare le dipendenze dei pari[[]: Quando si utilizzano i moduli di Expo, a volte è necessario installare manualmente i pacchetti correlati (ad esempio, per la navigazione).
- Console.log in produzione[: Rimuovere tutte le dichiarazioni della console prima di costruire. Usa per automatizzare questo.
- Dimensioni di codifica[]: Usa gancio da React Native per supportare diverse dimensioni dello schermo, comprese le compresse.
- Richiesta su Expo Vai per il test finale[[]: Expo Go è ottimo per lo sviluppo, ma alcune API possono comportarsi in modo diverso su una costruzione standalone.
Trasferirsi da principiante alla produzione
Expo non è solo uno strumento di apprendimento; è utilizzato da molte applicazioni di produzione, comprese le applicazioni per grandi aziende. Il flusso di lavoro gestito può gestire applicazioni di moderata complessità. Se la tua applicazione ha bisogno di pesanti integrazioni native, il flusso di lavoro nudo è sempre disponibile. La chiave è di iniziare semplice e solo aggiungere codice nativo quando necessario.
Con la mastering Expo, stai imparando modelli React Native standard che trasferiscono a qualsiasi progetto nativo. Le competenze che si ottiene - design collaborativo, gestione dello stato, navigazione e integrazione API - sono esattamente ciò che ti serve per lo sviluppo mobile professionale.
Prossimo passo e risorse
- Leggi il l'esercitazione ufficiale di Expo[] per un passo-passo.
- Esplora l'app Expo Go[] per vedere cosa c'è disponibile.
- Unisciti al Expo Discord[] per il supporto della comunità.
- Expo Snack[]] per il prototipo direttamente nel browser.
Costruire applicazioni mobili con Expo rimuove le barriere iniziali e ti permette di concentrarti su ciò che conta: la logica, il design e l’esperienza degli utenti della tua app.