React Academy · Lezione

Architettura a isole: idratazione selettiva

Scopra come le isole isolano i componenti interattivi, così solo questi includono JavaScript mentre il resto rimane HTML statico.

Lezione 2 di 413 passaggi

Architettura a isole: idratazione selettiva è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.

Il concetto delle isole

Islands Architecture, termine coniato da Jason Miller nel 2020, considera una pagina web come HTML perlopiù statico con "isole" interattive isolate incorporate al suo interno. L'oceano statico di HTML viene inviato al browser così com'è. Solo le isole interattive scaricano ed eseguono JavaScript, rendendo la quantità di JavaScript proporzionale all'interattività effettiva.

Come funzionano le isole

Ogni isola è un componente sottoposto a hydration in modo indipendente. Il server esegue il rendering dell'HTML iniziale dell'isola insieme al resto della pagina. Quando viene caricato il JavaScript dell'isola, React esegue l'hydration solo del sottoalbero di quel componente. L'HTML che circonda le isole non viene mai toccato da JavaScript: è davvero statico.

La differenza nella quantità di JavaScript

In una pagina di un articolo di blog realizzata con Islands Architecture, la quantità di JavaScript potrebbe essere di 5 kB per una singola isola con un pulsante Mi piace. La stessa pagina realizzata come SPA React potrebbe inviare oltre 200 kB di JavaScript per eseguire l'hydration dell'intera pagina. L'approccio delle isole rende la quantità di JavaScript proporzionale all'interattività, non alle dimensioni della pagina.

Isole basate su più framework

Astro, il principale framework per Islands Architecture, supporta isole realizzate con framework diversi nella stessa pagina. È possibile avere un'isola React accanto a un'isola Vue e a un'isola in JavaScript vanilla. Ogni isola viene inclusa in un bundle indipendente, quindi gli utenti scaricano solo il codice dei framework utilizzati dalle isole visibili.

client:load — Hydration immediata

La direttiva client:load esegue immediatamente l'hydration dell'isola al caricamento della pagina. La si usi per le isole immediatamente visibili e interattive, come un menu di navigazione o una sezione hero con un campo di ricerca. È la strategia di hydration con la priorità più alta.

client:idle — Hydration differita

La direttiva client:idle attende che il thread principale del browser sia inattivo, dopo il caricamento dei contenuti essenziali, prima di eseguire l'hydration dell'isola. È ideale per i widget sotto la parte inizialmente visibile o per le interazioni secondarie non necessarie subito, come una barra per la condivisione sui social.

client:visible — Hydration lazy

La direttiva client:visible usa un Intersection Observer per eseguire l'hydration dell'isola solo quando questa entra nell'area visibile. È ideale per le isole che si trovano in profondità nella pagina, come una sezione dei commenti o un carosello di prodotti correlati, che molti utenti potrebbero non raggiungere mai. JavaScript non viene nemmeno caricato finché non è necessario.

client:only — Esclusione dell'SSR

La direttiva client:only salta completamente il rendering lato server ed esegue il rendering dell'isola solo nel browser. È necessaria per i componenti che usano API disponibili esclusivamente nel browser, come window e document, o che dipendono dallo stato lato client al momento del mount. Lo svantaggio è l'assenza di HTML renderizzato dal server per quell'isola.

Risolvere il problema dell'hydration

Islands Architecture risolve completamente il problema dell'hydration assicurando che JavaScript venga caricato ed eseguito solo per i componenti realmente interattivi. Un articolo di blog con un pulsante Mi piace esegue l'hydration solo dell'isola del pulsante: il testo dell'articolo di 1200 parole, l'intestazione e il footer non richiedono alcuna esecuzione di JavaScript lato client.

Isolamento dello stato tra le isole

Ogni isola ha uno stato isolato. Le isole non possono condividere direttamente lo stato React perché sono alberi React separati. È una scelta intenzionale: se due componenti devono condividere lo stato, dovrebbero essere uniti in un'unica isola. La comunicazione tra le isole usa parametri URL, eventi DOM o librerie di gestione dello stato leggere.

Risultati nel mondo reale

I siti migrati da una SPA React a Islands Architecture, come il sito della documentazione di Astro, riportano miglioramenti notevoli: la quantità di JavaScript diminuisce del 70-90%, il TTI migliora di 2-4 secondi sui dispositivi mobili e i punteggi delle prestazioni in Lighthouse passano da valori intorno a 60 a oltre 90. I vantaggi sono più evidenti nelle pagine ricche di contenuti.

Strategie di idratazione delle isole

Quale direttiva di idratazione di Astro idrata un componente solo quando entra nella viewport?

Riepilogo della lezione

L'architettura a isole mantiene la maggior parte della pagina come HTML statico e idrata solo i componenti interattivi isolati. Astro fornisce direttive di idratazione: client:load (immediata), client:idle (dopo che il browser è inattivo), client:visible (quando l'elemento entra nella viewport) e client:only (rendering esclusivamente lato client). Ogni isola viene idratata in modo indipendente, quindi la quantità di JavaScript è proporzionale all'interattività, non alle dimensioni della pagina.

Gratis per iniziare

Impara React con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
88
Lezioni
324

Domande Frequenti

La lezione «Architettura a isole: idratazione selettiva» è gratuita?

Sì — il testo completo di «Architettura a isole: idratazione selettiva» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.

Cosa imparerò in «Architettura a isole: idratazione selettiva»?

Scopra come le isole isolano i componenti interattivi, così solo questi includono JavaScript mentre il resto rimane HTML statico. Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare React Academy?

Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Architettura a isole: idratazione selettiva»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione React Academy?

Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Il problema dell’idratazione completa
  2. Architettura a isole: idratazione selettiva
  3. Configurazione delle isole Astro e React
  4. Misurare le prestazioni: Lighthouse e Core Web Vitals
← Torna a React Academy