Sintassi Astro
Se conosci l’HTML, ne sai già abbastanza per scrivere il tuo primo componente Astro.
La sintassi del componente Astro è un superset di HTML. La sintassi è stata progettata per risultare familiare a chiunque abbia esperienza nella scrittura di HTML o JSX e aggiunge il supporto per includere componenti ed espressioni JavaScript.
Espressioni simili a JSX
Puoi definire variabili JavaScript locali all’interno dello script del componente frontmatter tra i due separatori del codice (---
) di un componente Astro. Puoi quindi inserire queste variabili nel modello HTML del componente utilizzando espressioni simili a JSX!
Utilizzando questo approccio, puoi includere valori dinamici calcolati nel frontmatter. Ma una volta inclusi, questi valori non sono reattivi e non cambieranno mai. I componenti Astro sono modelli che vengono eseguiti solo una volta, durante la fase di rendering.
Vedi sotto per ulteriori esempi di differenze tra Astro e JSX.
Variabili
Le variabili locali possono essere aggiunte all’HTML utilizzando la sintassi delle parentesi graffe:
Attributi dinamici
Le variabili locali possono essere utilizzate tra parentesi graffe per passare i valori degli attributi sia agli elementi che ai componenti HTML:
Gli attributi HTML verranno convertiti in stringhe, quindi non è possibile passare funzioni e oggetti agli elementi HTML. Ad esempio, non puoi assegnare un gestore eventi a un elemento HTML in un componente Astro:
Utilizza invece uno script lato client per aggiungere il gestore eventi, come faresti in JavaScript puro:
HTML dinamico
Le variabili locali possono essere utilizzate in funzioni simili a JSX per produrre elementi HTML generati dinamicamente:
Astro può visualizzare in modo condizionale l’HTML utilizzando gli operatori logici JSX e le espressioni ternarie.
Tag dinamici
Puoi anche utilizzare tag dinamici impostando una variabile sul nome di un tag HTML o sull’importazione di un componente:
Quando si utilizzano tag dinamici:
-
I nomi delle variabili devono essere scritti in maiuscolo. Ad esempio, utilizza
Element
, nonelement
. Altrimenti, Astro proverà a rendere il nome della tua variabile come un tag HTML letterale. -
Le direttive di idratazione non sono supportate. Quando si utilizzano le direttive di idratazione
client:*
, Astro deve sapere quali componenti raggruppare per la produzione e il modello di tag dinamico ne impedisce il funzionamento.
Frammenti
Astro supporta l’uso di <Fragment> </Fragment>
o della abbreviazione <> </>
.
I frammenti possono essere utili per evitare elementi wrapper quando si aggiungono direttive set:*
(EN), come nell’esempio seguente:
Differenze tra Astro e JSX
La sintassi del componente Astro è un superset di HTML. È stato progettato per risultare familiare a chiunque abbia esperienza con HTML o JSX, ma ci sono un paio di differenze fondamentali tra i file “.astro” e JSX.
Attributi
In Astro, utilizzi il formato standard “kebab-case” per tutti gli attributi HTML invece del formato “camelCase” utilizzato in JSX. Funziona anche per “class”, che non è supportato da React.
Elementi multipli
Un modello di componente Astro può eseguire il rendering di più elementi senza la necessità di racchiudere tutto in un singolo <div>
o <>
, a differenza di JavaScript o JSX.
Commenti
In Astro, puoi utilizzare commenti HTML standard o commenti in stile JavaScript.
I commenti in stile HTML verranno inclusi nel DOM del browser, mentre quelli JS verranno saltati. Per lasciare messaggi TODO o altre spiegazioni riservate allo sviluppo, potresti invece voler utilizzare commenti in stile JavaScript.