Componenti di framework UI
Costruisci il tuo sito web Astro senza rinunciare al tuo framework UI preferito.
Astro supporta molti tra i framework più diffusi, tra cui React, Preact, Svelte, Vue, SolidJS, AlpineJS e Lit.
Installazione delle integrazioni
Sezione intitolata Installazione delle integrazioniAstro viene fornito con integrazioni opzionali (EN) per React, Preact, Svelte, Vue, SolidJS, AlpineJS e Lit. Una o più di queste integrazioni Astro possono essere installate e configurate nel tuo progetto.
⚙️ Visualizza la Guida alle integrazioni (EN) per maggiori dettagli sull’installazione e la configurazione delle integrazioni Astro.
⚙️ Vuoi vedere un esempio del framework che hai scelto? Visita astro.new e seleziona uno dei modelli di framework.
Utilizzo dei componenti di framework UI
Sezione intitolata Utilizzo dei componenti di framework UIUsa i componenti del tuo framework JavaScript preferito nelle tue pagine, layout e componenti Astro proprio come se fossero dei componenti Astro! Tutti i tuoi componenti possono coesistere in /src/components
o possono essere organizzati nel modo che preferisci.
Per utilizzare un componente di un framework, importalo dal suo percorso relativo nello script del componente Astro. Quindi, utilizza il componente insieme ad altri componenti, elementi HTML ed espressioni simili a JSX nel modello del componente.
Per impostazione predefinita, i componenti del framework verranno visualizzati solo sul server, come HTML statico. Ciò è utile per creare modelli di componenti che non sono interattivi ed evita di inviare JavaScript non necessario al client.
Componenti interattivi idratanti
Sezione intitolata Componenti interattivi idratantiUn componente di framework UI può essere reso interattivo (idratato) utilizzando una direttiva client:*
(EN). Si tratta di attributi del componente che determinano quando il JavaScript del componente deve essere inviato al browser.
Con tutte le direttive client tranne client:only
, il tuo componente verrà prima renderizzato sul server per generare HTML statico. Il componente JavaScript verrà inviato al browser in base alla direttiva scelta. Il componente si idraterà e diventerà interattivo.
Il framework JavaScript (React, Svelte, ecc.) necessario per eseguire il rendering del componente verrà inviato al browser insieme al JavaScript del componente. Se due o più componenti di una pagina utilizzano lo stesso framework, il framework verrà inviato una sola volta.
La maggior parte dei modelli di accessibilità specifici del framework dovrebbero funzionare allo stesso modo quando questi componenti vengono utilizzati in Astro. Assicurati di scegliere una direttiva client che garantisca che qualsiasi JavaScript relativo all’accessibilità venga caricato correttamente ed eseguito al momento opportuno!
Direttive di idratazione disponibili
Sezione intitolata Direttive di idratazione disponibiliSono disponibili diverse direttive di idratazione per i componenti del framework dell’interfaccia utente: client:load
, client:idle
, client:visible
, client:media={QUERY}
e client:only={FRAMEWORK}
.
📚 Consulta la nostra pagina riferimento alle direttive (EN) per una descrizione completa di queste direttive sull’idratazione e il loro utilizzo.
Strutture di miscelazione
Sezione intitolata Strutture di miscelazionePuoi importare ed eseguire il rendering di componenti da più framework nello stesso componente Astro.
Solo i componenti Astro (.astro
) possono contenere componenti provenienti da più framework.
Passaggio di proprietà ai componenti dei framework
Sezione intitolata Passaggio di proprietà ai componenti dei frameworkPuoi passare proprietà dai componenti Astro ai componenti dei framework:
Puoi passare una funzione come proprietà a un componente di un framework, ma questo funzionerà solo durante il rendering del server. Se provi a utilizzare la funzione in un componente idratato (ad esempio, come gestore eventi), si verificherà un errore.
Questo perché le funzioni non possono essere serializzate (trasferite dal server al client) da Astro.
Passaggio dei figli ai componenti del framework
Sezione intitolata Passaggio dei figli ai componenti del frameworkAll’interno di un componente Astro, puoi passare dei figli ai componenti di un framework. Ogni framework ha un proprio meccanismo per fare riferimento a componenti figli: React, Preact e Solid usano tutti un oggetto speciale chiamato children
, mentre Svelte e Vue usano l’elemento <slot />
.
Inoltre, puoi utilizzare slot nominati per raggruppare insieme figli specifici.
Per React, Preact e Solid questi slot verranno convertiti in proprietà di livello superiore. I nomi degli slot che utilizzano kebab-case
verranno convertiti in camelCase
.
Per Svelte e Vue è possibile fare riferimento a questi slot utilizzando un elemento <slot>
con l’attributo name
. I nomi degli slot che utilizzano kebab-case
verranno conservati.
Componenti della struttura inseriti l’uno nell’altro
Sezione intitolata Componenti della struttura inseriti l’uno nell’altroAll’interno di un file Astro, i componenti figlio del framework possono anche essere componenti idratati. Ciò significa che puoi inserire ricorsivamente componenti l’uno nell’altro da uno qualsiasi di questi framework.
Ricorda: gli stessi file dei componenti del framework (ad esempio .jsx
, .svelte
) non possono mescolare più framework.
Ciò ti consente di creare intere “app” nel tuo framework JavaScript preferito e renderle, tramite un componente principale, in una pagina Astro.
Il rendering dei componenti Astro viene sempre eseguito in HTML statico, anche quando includono componenti del framework idratati. Ciò significa che puoi passare solo proprietà che non eseguono alcun render in HTML. Passare gli “oggetti di rendering” di React ai componenti del framework da un componente Astro non funzionerà, perché i componenti Astro non possono fornire il comportamento di runtime del client richiesto da questo modello. Utilizza invece gli slot con nome.
Posso utilizzare gli Astro Components all’interno dei miei Framework Components?
Sezione intitolata Posso utilizzare gli Astro Components all’interno dei miei Framework Components?Qualsiasi componente del framework dell’interfaccia utente diventa un´“isola” di tale framework. Questi componenti devono essere scritti interamente come codice valido per quel framework, utilizzando solo le proprie importazioni e pacchetti. Non è possibile importare componenti .astro
in un componente del framework dell’interfaccia utente (ad esempio .jsx
o .svelte
).
Puoi, tuttavia, utilizzare il pattern Astro <slot />
per passare il contenuto statico generato dai componenti Astro come figli ai componenti del framework all’interno di un Componente .astro
.
Posso idratare i componenti Astro?
Sezione intitolata Posso idratare i componenti Astro?Se provi a idratare un componente Astro con un modificatore client:
, riceverai un errore.
I componenti Astro sono componenti di template solo HTML senza runtime lato client. Puoi però utilizzare un tag <script>
nel modello del componente Astro per inviare JavaScript al browser che viene eseguito nell’ambito globale.
📚 Ulteriori informazioni sui tag <script>
lato client nei componenti Astro (EN)