Sintaxe do Astro
Se você conhece HTML, já sabe o suficiente para escrever seu primeiro componente Astro.
A sintaxe de componente Astro é uma extensão do HTML. A sintaxe foi projetada para soar familiar a qualquer um com experiência em escrever HTML ou JSX, e adiciona suporte para incluir componentes e expressões JavaScript.
Expressões parecidas com JSX
Seção intitulada Expressões parecidas com JSXVocê pode definir variáveis locais do JavaScript dentro do script frontmatter do componente entre as duas cercas de código (---
) de um componente Astro. Você pode então injetar essas variáveis no modelo HTML do componente usando expressões parecidas com JSX!
Usando essa abordagem, você pode incluir valores dinâmicos que são calculados no frontmatter. Mas uma vez incluídos, esses valores não são reativos e nunca mudarão. Componentes Astro são modelos que só executam uma vez durante a etapa de renderização.
Veja abaixo mais exemplos de diferenças entre Astro e JSX.
Variáveis
Seção intitulada VariáveisVariáveis locais podem ser adicionadas ao HTML usando a sintaxe de chaves:
Atributos Dinâmicos
Seção intitulada Atributos DinâmicosVariáveis locais podem ser usadas entre chaves para passar valores de atributos tanto para elementos HTML como para componentes:
Atributos HTML vão ser convertidos para strings, portanto não é possível passar funções e objetos para elementos HTML. Por exemplo, você não pode atribuir um manipulador de eventos a um elemento HTML em um componente Astro:
Em vez disso, use um script no lado do cliente para adicionar o manipulador de evento, como você faria no JavaScript vanilla:
HTML Dinâmico
Seção intitulada HTML DinâmicoVariáveis locais podem ser usadas em funções parecidas com JSX para produzir elementos HTML gerados dinamicamente:
Astro pode exibir HTML condicionalmente usando operadores lógicos JSX e expressões ternárias.
Tags Dinâmicas
Seção intitulada Tags DinâmicasVocê também pode usar tags dinâmicas ao atribuir a uma variável o nome de uma tag HTML ou um componente importado:
Ao usar tags dinâmicas:
-
Os nomes de variáveis devem iniciar com maiúsculas. Por exemplo, use
Elemento
, nãoelemento
. Caso contrário, Astro tentará renderizar o nome da sua variável como uma tag HTML literal. -
Diretivas de hidratação não são suportadas. Ao usar as diretivas de hidratação
client:*
, o Astro precisa saber quais componentes devem fazer parte do bundle para produção, e o padrão de tags dinâmicas impede que isso funcione. -
A diretiva define:vars não é suportada. Se você não puder envolver os filhos com um elemento extra (como
<div>
), então você pode adicionar manualmente umstyle={`--myVar:${value}`}
ao seu Elemento.
Fragmentos
Seção intitulada FragmentosO Astro suporta usar tanto <Fragment></Fragment>
como a abreviação <></>
.
Fragmentos podem ser úteis para evitar elementos de invólucro ao adicionar diretivas set:*
, como no exemplo seguinte:
Diferenças entre Astro e JSX
Seção intitulada Diferenças entre Astro e JSXA sintaxe de componente Astro é um superconjunto do HTML. Ela foi projetada para parecer familiar a qualquer um com experiência com HTML ou JSX, mas existem algumas diferenças importantes entre arquivos .astro
e JSX.
Atributos
Seção intitulada AtributosNo Astro, você usa o formato padrão kebab-case
para todos os atributos HTML em vez do camelCase
usado no JSX. Isso funciona até para o class
, que não é suportado pelo React.
Múltiplos Elementos
Seção intitulada Múltiplos ElementosO modelo de um componente do Astro pode renderizar vários elementos sem a necessidade de envolver tudo em uma única <div>
ou <>
, diferente do JavaScript ou JSX.
Comentários
Seção intitulada ComentáriosNo Astro, você pode usar comentários HTML padrão ou comentários no estilo JavaScript.
Os comentários no estilo HTML serão incluídos no DOM do navegador, enquanto os JS serão ignorados. Para deixar mensagens TODO ou outras explicações somente em desenvolvimento, você pode querer usar comentários no estilo JavaScript.