Introduzione

Next.js è un framework JavaScript creato da Zeit. Ti consente di creare applicazioni Web statiche e di rendering lato server utilizzando React. È un ottimo strumento per costruire il un sito Web. Ha molte funzionalità e vantaggi, che possono rendere Nextjs la tua prima opzione per creare la tua prossima applicazione web.

L'uso di Next.js con Expo ti consentirà di eseguire il rendering server-side della tua app Expo universale quando è in esecuzione nel browser.

Questa guida ti mostrerà il metodo raccomandato per utilizzare i moduli di Expo SDK con gli strumenti di Next.js.

Creare un app universale con Next.js ed Expo

In questo approccio utilizzerai SSR (Server Side Rendering) per il web nel tuo progetto universale. Questo è il modo consigliato perché ti dà pieno accesso alle funzionalità di Expo e Next.js.

SSR è una tecnica utilizzata per migliorare i tempi di caricamento della pagina percepiti.

In uno scenario non SSR, l'app di React viene visualizzata come un insieme di file statici. In questo modo i passaggi (più o meno) avvengono prima che l'utente possa vedere il primo rendering dell'app.

Installa expo-cli se non è ancora installato:

npm i -g expo-cli

Avvia il tuo nuovo progetto con Expo, utilizzando il seguente comando:

expo init --template blank

Entra nella cartella del progetto appena creato, con il comando cd:

cd my-app

Installa l'adapter (adattatore) con yarn, oppure è possibile utilizzare npm:

yarn add @expo/next-adapter
npm i --save @expo/next-adapter

Aggiungi il supporto a Next.js:

yarn next-expo

Avvia il progetto:

yarn next dev

Apri il browser e collegati al tuo indirizzo IP: http://INDIRIZZO_IP:3000/ per vedere il tuo progetto.

Dovresti visualizzare una schermata come la seguente:

Ora puoi iniziare a modificare il progetto e utilizzare Expo SDK.

Creare una build Android e iOS

Abbiamo visto come creare una semplice app universale di esempio. Vediamo adesso pochi semplici passaggi su come creare una build per Android e iOS con le impostazioni di default.

Accedere alla cartella del progetto appena creato e aprire il file app.json.

Aggiungi le seguenti righe di codice per Android e iOS:

...
    "ios": {
      "bundleIdentifier": "com.yourcompany.yourappname",
      "buildNumber": "1.0.0"
    },
    "android": {
      "package": "com.yourcompany.yourappname",
      "versionCode": 1
    }
...

Quindi il risultato finale del nostro file app.json sarà il seguente:

{
  "expo": {
    "name": "my-app",
    "slug": "my-app",
    "platforms": [
      "ios",
      "android",
      "web"
    ],
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/icon.png",
    "splash": {
      "image": "./assets/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": [
      "**/*"
    ],
    "ios": {
      "bundleIdentifier": "com.yourcompany.yourappname",
      "buildNumber": "1.0.0"
    },
    "android": {
      "package": "com.yourcompany.yourappname",
      "versionCode": 1
    }
  }
}

Per creare una build per Android, da terminale digitare il seguente comando:

expo build:android

Per creare una build per iOS, da terminale digitare il seguente comando:

expo build:ios

Creare un app solo per web con Next.js ed Expo

Questo approccio è utile se si desidera utilizzare solo componenti Expo nel proprio progetto Web.

Crea un progetto:

npx create-next-app

Installa l'adapter (adattatore) con yarn oppure utilizzando npm:

yarn add @expo/next-adapter
npm i --save @expo/next-adapter

Aggiungi il supporto Next.js:

yarn next-expo

Avvia il progetto con:

yarn next dev

Apri il browser e collegati al tuo indirizzo IP: http://INDIRIZZO_IP:3000/  per vedere il tuo progetto.

Struttura dei file

Ecco la struttura di file consigliata per un progetto Expo con supporto Next.js.

Expo Next.js
├── pages -> Routes
│    └── index.tsx -> Entry Point for Next.js
│    └── _document.js -> The wrapper element for a page, used for normalizing styles like React Native.
├── .next -> Generated Next.js files (should be ignored)
├── assets -> All static assets for your project
├── App.tsx -> Entry Point for Mobile apps
├── app.json -> Expo config file
├── next.config.js -> Next.js config file
└── babel.config.js -> Babel config (should be using `@expo/next-adapter/babel`)

Conclusione

Per la guida più aggiornata è necessario fare riferimento alla documentazione Expo: Next.js.

Per altri tutorial riguardanti Expo, vedere la seguente sezione:

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.