If you know HTML, you already know enough to write your first Astro component.
Astro component syntax is a superset of HTML. The syntax was designed to feel familiar to anyone with experience writing HTML or JSX, and adds support for including components and JavaScript expressions.
You can define local JavaScript variables inside of the frontmatter component script between the two code fences (---
) of an Astro component. You can then inject these variables into the component’s HTML template using JSX-like expressions!
Local variables can be added into the HTML using the curly braces syntax:
Local variables can be used in curly braces to pass attribute values to both HTML elements and components:
Local variables can be used in JSX-like functions to produce dynamically-generated HTML elements:
Astro can conditionally display HTML using JSX logical operators and ternary expressions.
You can also use dynamic tags by setting a variable to an HTML tag name or a component import:
When using dynamic tags:
Variable names must be capitalized. For example, use Element
, not element
. Otherwise, Astro will try to render your variable name as a literal HTML tag.
Hydration directives are not supported. When using client:*
hydration directives, Astro needs to know which components to bundle for production, and the dynamic tag pattern prevents this from working.
Astro supports using either <Fragment> </Fragment>
or the shorthand <> </>
.
Fragments can be useful to avoid wrapper elements when adding set:*
directives, as in the following example:
Astro component syntax is a superset of HTML. It was designed to feel familiar to anyone with HTML or JSX experience, but there are a couple of key differences between .astro
files and JSX.
In Astro, you use the standard kebab-case
format for all HTML attributes instead of the camelCase
used in JSX. This even works for class
, which is not supported by React.
An Astro component template can render multiple elements with no need to wrap everything in a single <div>
or <>
, unlike JavaScript or JSX.
In Astro, you can use standard HTML comments or JavaScript-style comments.
© 2021 Fred K. Schott
Licensed under the MIT License.
https://docs.astro.build/en/core-concepts/astro-syntax/