Avviare un Nuovo Progetto React

Se vuoi costruire una nuova app o un nuovo sito web interamente con React, ti consigliamo di scegliere uno dei framework basati su React piú popolari nella comunità.

Puoi usare React senza un framework, tuttavia abbiamo trovato che la maggior parte delle app e dei siti alla fine costruiscono soluzioni per problemi comuni come la suddivisione del codice, il routing, il recupero dei dati e la generazione di HTML. Questi problemi sono comuni a tutte le librerie di interfaccia utente, non solo a React.

Cominciando con un framework, puoi iniziare ad utilizzare React rapidamente ed evitare di costruire il tuo framework in seguito.

Approfondimento

Posso utilizzare React senza un framework?

Puoi sicuramente usare React senza un framework: è così che useresti React per una parte della tua pagina. Tuttavia, se stai creando una nuova app o un sito completamente con React, ti consigliamo di utilizzare un framework.

Ecco perché.

Anche se all’inizio potresti non aver bisogno di routing o di recupero dati, è probabile che tu voglia aggiungere alcune librerie per queste funzionalità. Con ogni nuova funzionalità, il tuo bundle JavaScript cresce e potresti dover capire come suddividere il codice per ogni singola route in modo individuale. Con esigenze di recupero dati più complesse, è probabile che incontri situazioni in cui la rete tra server e client crea un effetto di cascata che rende la tua app molto lenta. Siccome il tuo pubblico include più utenti con condizioni di rete scadenti o dispositivi di fascia bassa, potresti dover generare HTML dai tuoi componenti per mostrare il contenuto in anticipo, sia lato server che durante la fase di build. Modificare la configurazione per eseguire parte del tuo codice sul server o durante la fase di build può essere molto complicato.

Questi problemi non sono specifici di React. Questo è il motivo per cui Svelte ha SvelteKit, Vue ha Nuxt e così via. Per risolvere questi problemi da soli, sarà necessario integrare il tuo bundler con il tuo router e con la tua libreria di recupero dati. Non è difficile far funzionare una configurazione iniziale, ma ci sono molte sottigliezze coinvolte nel creare un’applicazione che si carichi rapidamente anche crescendo nel tempo. Vorrai inviare solo il minimo necessario di codice dell’applicazione, ma farlo in un unico collegamento client-server, in parallelo con i dati richiesti per la pagina. Probabilmente vorrai che la pagina sia interattiva prima ancora che il tuo codice JavaScript venga eseguito, per supportare il miglioramento progressivo. Potresti voler generare una cartella di file HTML completamente statici per le tue pagine di marketing che possono essere ospitate ovunque e funzionare ancora con JavaScript disabilitato. Costruire queste capacità da soli richiede parecchio lavoro.

I framework React presenti in questa pagina risolvono questi problemi di default, senza alcun lavoro aggiuntivo da parte tua. Ti permettono di iniziare con una configurazione leggera e poi scalare la tua app in base alle tue esigenze. Ogni framework React ha una comunità, quindi trovare risposte alle domande e aggiornare gli strumenti è più facile. Inoltre, i framework forniscono una struttura al tuo codice, aiutando te stesso e gli altri a mantenere il contesto e le competenze tra diversi progetti. Al contrario, con una configurazione personalizzata è più facile rimanere bloccati con versioni di dipendenze non supportate, e alla fine finirai per creare il tuo framework, anche se in modo meno strutturato e senza una comunità o un percorso di aggiornamento (e se è simile a quelli che abbiamo creato in passato, potrebbe essere progettato in modo più casuale).

Se la tua app ha vincoli insoliti che non sono soddisfatti da questi framework, oppure preferisci risolvere questi problemi da solo, puoi creare la tua configurazione personalizzata con React. Scarica react e react-dom da npm, configura il tuo processo di build personalizzato con un bundler come Vite o Parcel e aggiungi altri strumenti di cui hai bisogno per il routing, la generazione statica o il rendering lato server e altro ancora.

Framework React di qualità professionale

Questi framework supportano tutte le funzionalità di cui hai bisogno per distribuire e scalare la tua app in produzione e stanno lavorando per supportare la nostra visione di architettura full-stack. Tutti i framework che consigliamo sono open source con comunità attive per il supporto e possono essere distribuiti sul tuo server o su un provider di hosting. Se sei un autore di framework interessato a essere incluso in questa lista, faccelo sapere.

Next.js

Il Router di Pagine di Next.js è un framework React full-stack. È versatile e ti consente di creare app React di qualsiasi dimensione, da un blog principalmente statico a un’applicazione dinamica complessa. Per creare un nuovo progetto Next.js, esegui il seguente comando nel tuo terminale:

Terminal
npx create-next-app@latest

Se sei nuovo in Next.js, dai un’occhiata al corso per imparare Next.js.

Next.js è mantenuto da Vercel. Puoi distribuire un’app Next.js su qualsiasi hosting Node.js o serverless, o sul tuo server personale. Le app Next.js completamente statiche possono essere distribuite su qualsiasi hosting statico.

Remix

Remix è un framework React full-stack con routing nidificato. Ti consente di suddividere la tua app in parti nidificate che possono caricare dati in parallelo e aggiornarsi in risposta alle azioni dell’utente. Per creare un nuovo progetto Remix, esegui il seguente comando:

Terminal
npx create-remix

Se sei nuovo in Remix, dai un’occhiata al blog tutorial (breve) e al app tutorial (lungo).

Remix è mantenuto da Shopify. Quando crei un progetto Remix, devi scegliere il tuo target di distribuzione. Puoi distribuire un’app Remix su qualsiasi hosting Node.js o serverless utilizzando o scrivendo un adattatore.

Gatsby

Gatsby è un framework React per siti web CMS veloci. Il suo ricco ecosistema di plugin e il suo livello di dati GraphQL semplificano l’integrazione di contenuti, API e servizi in un unico sito web. Per creare un nuovo progetto Gatsby, esegui il seguente comando:

Terminal
npx create-gatsby

Se sei nuovo in Gatsby, dai un’occhiata al Gatsby tutorial.

Gatsby è mantenuto da Netlify. Puoi distribuire un sito Gatsby completamente statico su qualsiasi hosting statico. Se opti per l’utilizzo di funzionalità server-side, assicurati che il tuo provider di hosting supporti tali funzionalità per Gatsby.

Expo (for native apps)

Expo è un framework per React che ti consente di creare app universali per Android, iOS e web con interfacce utente veramente native. Fornisce un SDK per React Native che semplifica l’utilizzo delle parti native. Per creare un nuovo progetto Expo, esegui il seguente comando:

Terminal
npx create-expo-app

Se sei nuovo in Expo, puoi seguire Expo tutorial.

Expo è mantenuto da Expo (l’azienda). La creazione di app con Expo è gratuita e puoi inviarle agli app store di Google e Apple senza restrizioni. Expo fornisce inoltre servizi cloud a pagamento opzionali.

Framework React all’avanguardia

Come abbiamo esplorato come migliorare continuamente React, abbiamo realizzato che integrare React in modo più stretto con i framework (in particolare con il routing, il bundling e le tecnologie server) è la nostra più grande opportunità per aiutare gli utenti di React a costruire app migliori. Il team di Next.js ha accettato di collaborare con noi nella ricerca, nello sviluppo, nell’integrazione e nei test di funzionalità di React all’avanguardia, indipendenti dai framework, come React Server Components.

Queste funzionalità stanno diventando sempre più vicine alla prontezza per la produzione ogni giorno, e abbiamo avviato discussioni con altri sviluppatori di bundler e framework per integrarle. La nostra speranza è che tra un anno o due, tutti i framework elencati in questa pagina avranno il pieno supporto per queste funzionalità. (Se sei un autore di framework interessato a collaborare con noi per sperimentare con queste funzionalità, ti preghiamo di farcelo sapere!)

Next.js (App Router)

Il router dell’app di Next.js’s è una ridisegnazione delle API di Next.js che mira a realizzare la visione di architettura full-stack del team di React. Consente di recuperare dati in componenti asincroni che vengono eseguiti sul server o addirittura durante la fase di build.

Next.js è mantenuto da Vercel. Puoi distribuire un’app Next.js su qualsiasi hosting Node.js o serverless, o sul tuo server. Next.js supporta anche l’esportazione statica che non richiede un server.

Approfondimento

Quali caratteristiche compongono la visione di architettura full-stack del team di React?

Il bundler del router dell’app di Next.js implementa completamente la specifica ufficiale dei React Server Components. Questo consente di mescolare componenti generati a tempo di build, componenti esclusivamente server-side e componenti interattivi all’interno di un singolo albero di React.

Ad esempio, è possibile scrivere un componente React esclusivamente server-side come una funzione async che legge da un database o da un file. Successivamente, è possibile passare i dati ai componenti interattivi:

// This component runs *only* on the server (or during the build).
async function Talks({ confId }) {
// 1. You're on the server, so you can talk to your data layer. API endpoint not required.
const talks = await db.Talks.findAll({ confId });

// 2. Add any amount of rendering logic. It won't make your JavaScript bundle larger.
const videos = talks.map(talk => talk.video);

// 3. Pass the data down to the components that will run in the browser.
return <SearchableVideoList videos={videos} />;
}

Il router dell’app di Next.js integra anche il recupero dei dati con Suspense.. Questo consente di specificare uno stato di caricamento (come un segnaposto scheletro) per diverse parti dell’interfaccia utente direttamente nell’albero di React:

<Suspense fallback={<TalksLoading />}>
<Talks confId={conf.id} />
</Suspense>

Server Components e Suspense sono funzionalità di React che possono essere adottate a livello di framework. Al momento, il router dell’app di Next.js è l’implementazione più completa di queste funzionalità tra i vari framework. Il team di React sta anche lavorando con gli sviluppatori di bundler per rendere più semplice l’implementazione di queste funzionalità nella prossima generazione di framework.