Statische Routen ·
Dynamische Routen ·
Parameter ·
Layouts ·
Pagination ·
API-Endpoints
Astro verwendet ein datei-basiertes Routing-System. Jede `.astro`-, `.md`- oder `.mdx`-Datei im `pages/`-Verzeichnis wird automatisch zu einer Route. Dieses Cheatsheet erklärt die wichtigsten Routing-Konzepte.
Statische Routen werden durch Dateien im pages/-Verzeichnis definiert. Der Dateiname entspricht der URL-Pfad. index.astro wird zur Root-Route.
404.astro (oder 404.md) wird automatisch als benutzerdefinierte 404-Fehlerseite verwendet.
Dynamische Routen werden mit eckigen Klammern definiert (z.B. [slug].astro). getStaticPaths() generiert die möglichen Pfade zur Build-Zeit. [...slug].astro erfasst mehrere Pfadsegmente (Catch-all).
params auch ohne getStaticPaths verwenden – die Route wird dann zur Laufzeit dynamisch aufgelöst.
Parameter werden aus der URL extrahiert und in Astro.params bereitgestellt. Props können in getStaticPaths definiert und an die Seite übergeben werden.
props in getStaticPaths, um Daten direkt an die Seite zu übergeben – das ist effizienter als separate API-Aufrufe in der Seite.
Layouts in Astro sind Komponenten, die das Grundgerüst von Seiten definieren. Sie werden durch _layout.astro-Dateien in Verzeichnissen definiert und können verschachtelt werden.
_layout.astro-Dateien werden automatisch auf alle Seiten im gleichen Verzeichnis und dessen Unterverzeichnissen angewendet. Die Verschachtelung ermöglicht eine granulare Layout-Steuerung.
Pagination in Astro wird mit der integrierten paginate()-Funktion unterstützt. Sie generiert automatisch Seiten wie /blog/page/2 und stellt Daten für die aktuelle Seite bereit.
paginate()-Funktion erstellt automatisch die erste Seite unter dem Basispfad (z.B. /blog) und die weiteren unter /blog/page/2, /blog/page/3 usw.
API-Endpoints in Astro werden mit +server.js-Dateien im pages/-Verzeichnis definiert. Sie ermöglichen die Erstellung von REST-APIs. Redirects können in astro.config.mjs konfiguriert werden.
output: 'server' oder 'hybrid') unterstützt. Im statischen Modus können Sie stattdessen ein separates Backend oder Edge-Functions verwenden.
index.astro
[slug]
Astro.params
_layout
paginate()
+server.js
pages/blog/[slug].astro ·
export async function getStaticPaths() { ... } ·
const { slug } = Astro.params