Astro Syntax
Wenn du HTML kennst, weißt du bereits genug, um deine erste Astro-Komponente zu schreiben.
Die Syntax von Astro-Komponenten ist eine Erweiterung von HTML. Die Syntax wurde so entworfen, dass sie für jeden, der Erfahrung mit HTML oder JSX hat, vertraut wirkt, und sie ermöglicht das Einbinden von Komponenten und JavaScript-Ausdrücken.
JSX-ähnliche Ausdrücke
Abschnitt betitelt JSX-ähnliche AusdrückeDu kannst lokale JavaScript-Variablen innerhalb des Skripts der Frontmatter-Komponente zwischen den beiden Code-Grenzen (---
) einer Astro-Komponente definieren. Du kannst dann diese Variablen mithilfe von JSX-ähnlichen Ausdrücken in das HTML-Template der Komponente einfügen!
Mit diesem Ansatz kannst du dynamische Werte einbinden, die im Frontmatter berechnet werden. Doch einmal eingefügt, ändern sich diese Werte nicht mehr und sind nicht reaktiv. Astro-Komponenten sind Vorlagen, die nur einmal während des Rendering-Schritts ausgeführt werden.
Weitere Beispiele für Unterschiede zwischen Astro und JSX siehe unten.
Variabeln
Abschnitt betitelt VariabelnLokale Variablen können mithilfe der geschweiften-Klammern-Syntax in das HTML eingefügt werden:
Dynamische Attribute
Abschnitt betitelt Dynamische AttributeLokale Variablen können in geschweiften Klammern verwendet werden, um Attributwerte sowohl an HTML-Elemente als auch an Komponenten zu übergeben:
HTML-Attribute werden in Zeichenketten umgewandelt, daher ist es nicht möglich, Funktionen und Objekte an HTML-Elemente zu übergeben. Beispielsweise ist es nicht möglich, in einer Astro-Komponente einen event handler einem HTML-Element zuzuweisen:
Stattdessen verwende ein clientseitiges Skript, um den event handler hinzuzufügen, so wie du es in reinem JavaScript tun würdest:
Dynamisches HTML
Abschnitt betitelt Dynamisches HTMLLokale Variablen können in JSX-ähnlichen Funktionen verwendet werden, um dynamisch generierte HTML-Elemente zu erzeugen:
Astro kann bedingt HTML anzeigen, indem es JSX-logische Operatoren und Ternär-Ausdrücke verwendet.
Dynamische Tags
Abschnitt betitelt Dynamische TagsDu kannst auch dynamische Tags verwenden, indem du eine Variable auf einen HTML-Tag-Namen oder einen Komponentenimport setzt:
Bei der Verwendung von dynamischen Tags:
-
Die Variablennamen müssen großgeschrieben sein. Verwende beispielsweise
Element
und nichtelement
. Andernfalls wird Astro versuchen, deinen Variablennamen als wörtlichen HTML-Tag zu rendern. -
Hydratisierungsanweisungen werden nicht unterstützt. Bei Verwendung von Hydratisierungsanweisungen
client:*
muss Astro wissen, welche Komponenten für die Produktion gebündelt werden sollen, und das Muster dynamischer Tags verhindert dies.
Fragmente
Abschnitt betitelt FragmenteAstro unterstützt die Verwendung von <Fragment> </Fragment>
oder der Kurzform <> </>
.
Fragments können nützlich sein, um Wrapper-Elemente zu vermeiden, wenn set:*
-Anweisungen (EN) hinzugefügt werden, wie im folgenden Beispiel:
Unterschiede zwischen Astro und JSX
Abschnitt betitelt Unterschiede zwischen Astro und JSXDie Syntax der Astro-Komponenten ist eine Erweiterung von HTML. Sie wurde so entworfen, dass sie für jeden mit HTML- oder JSX-Erfahrung vertraut wirkt, aber es gibt ein paar wesentliche Unterschiede zwischen .astro
-Dateien und JSX.
Attribute
Abschnitt betitelt AttributeIn Astro verwendest du den Standard kebab-case
für alle HTML-Attribute anstelle von camelCase
, wie es in JSX verwendet wird. Dies gilt sogar für class
, was von React nicht unterstützt wird.
Mehrere Elemente
Abschnitt betitelt Mehrere ElementeEine Astro-Komponentenvorlage kann mehrere Elemente rendern, ohne dass alles in ein einzelnes <div>
oder <>
eingebettet werden muss, im Gegensatz zu JavaScript oder JSX.
Kommentare
Abschnitt betitelt KommentareIn Astro kannst du Standard-HTML-Kommentare oder Kommentare im JavaScript-Stil verwenden.
HTML-Kommentare werden in dem DOM des Browsers enthalten sein, während JavaScript-Kommentare übersprungen werden. Um TODO-Nachrichten oder andere nur für die Entwicklung bestimmte Erläuterungen zu hinterlassen, empfiehlt es sich, Kommentare im JavaScript-Stil zu verwenden.