Importe
Astro unterstützt die meisten statischen Elemente, ohne dass eine Konfiguration erforderlich ist. Du kannst die Anweisung import
an beliebiger Stelle in deinem Projekt-JavaScript verwenden (einschließlich Astro-Frontmatter) und Astro wird eine optimierte Kopie dieses statischen Elements in deinem endgültigen Build einfügen. @import
wird auch innerhalb von CSS & <style>
Tags unterstützt.
Unterstützte Dateitypen
Die folgenden Dateitypen werden von Astro standardmäßig unterstützt:
- Astro-Komponenten (
.astro
) - Markdown (
.md
,.markdown
, etc.) - JavaScript (
.js
,.mjs
) - TypeScript (
.ts
,.tsx
) - NPM-Pakete
- JSON (
.json
) - JSX (
.jsx
,.tsx
) - CSS (
.css
) - CSS-Module (
.module.css
) - Bilder & Assets (
.svg
,.jpg
,.png
, etc.)
Darüber hinaus kannst du Astro erweitern, um Unterstützung für verschiedene UI-Frameworks wie React, Svelte und Vue-Komponenten hinzuzufügen. Du kannst auch die Astro MDX Integration (EN) installieren und .mdx
Dateien in deinem Projekt verwenden.
Dateien in public/
Du kannst jedes statische Asset in das Verzeichnis public/
deines Projekts legen und Astro kopiert es direkt und unverändert in deinen endgültigen Build. public/
-Dateien werden von Astro nicht gebaut oder gebündelt, was bedeutet, dass jede Art von Datei unterstützt wird. Du kannst eine public/
-Datei über einen URL-Pfad direkt in deinem HTML-Vorlagen referenzieren.
Import-Anweisungen
Astro verwendet ESM, die gleiche import
und export
Syntax, die auch im Browser unterstützt wird.
JavaScript
JavaScript kann mit der normalen ESM-Syntax import
und export
importiert werden.
TypeScript
Astro bietet eine integrierte Unterstützung für TypeScript. Du kannst “ts”- und “tsx”-Dateien direkt in dein Astro-Projekt importieren und sogar TypeScript-Code direkt in dein Astro-Komponentenskript und alle hoisted script tags schreiben.
Astro führt selbst keine Typüberprüfung durch. Die Typüberprüfung sollte außerhalb von Astro erfolgen, entweder durch deine IDE oder durch ein separates Skript. Für die Typüberprüfung von Astro-Dateien steht der Befehl astro check
(EN) zur Verfügung.
Gemäß TypeScripts Regeln zur Modulauflösung sollten die Dateierweiterungen .ts
und .tsx
beim Import von TypeScript-Dateien nicht verwendet werden. Verwende stattdessen entweder die Dateierweiterungen .js
/.jsx
oder lasse die Dateierweiterung ganz weg.
📚 Lies mehr über TypeScript-Unterstützung in Astro.
JSX / TSX
Astro bietet integrierte Unterstützung für JSX-Dateien (*.jsx und *.tsx) in deinem Projekt. Die JSX-Syntax wird automatisch in JavaScript umgewandelt.
Auch wenn Astro JSX-Syntax versteht, musst du eine Framework-Integration einbinden, um Frameworks wie React, Preact und Solid korrekt zu rendern. In unserem Leitfaden Integrationen nutzen erfährst du mehr.
Astro unterstützt JSX nicht in .js
/.ts
-Dateien. JSX wird nur innerhalb von Dateien verarbeitet, die mit den Dateierweiterungen .jsx
und .tsx
enden.
NPM-Pakete
Wenn du ein NPM-Paket installierst hast, kannst du es in Astro importieren.
Wenn ein Paket in einem älteren Format veröffentlicht wurde, wird Astro versuchen, das Paket in ESM zu konvertieren, damit die “import”-Anweisungen funktionieren. In einigen Fällen muss du deine vite
config (EN) anpassen, damit es funktioniert.
Einige Pakete sind auf eine Browser-Umgebung angewiesen. Astro-Komponenten laufen auf dem Server, daher kann der Import dieser Pakete im Frontmatter zu Fehlern führen.
JSON
Astro unterstützt den Import von JSON-Dateien direkt in deine Anwendung. Importierte Dateien geben das vollständige JSON-Objekt im Standardimport zurück.
CSS
Astro unterstützt den Import von CSS-Dateien direkt in deine Anwendung. Importierte Styles werden nicht exportiert, aber wenn du einen importierst, werden diese Styles automatisch in die Seite eingefügt. Dies funktioniert standardmäßig für alle CSS-Dateien und kann Compile-to-CSS-Sprachen wie Sass und Less über Plugins unterstützen.
CSS-Module
Astro unterstützt CSS-Module unter Verwendung der Namenskonvention [name].module.css
. Wie bei jeder CSS-Datei wird beim Importieren einer solchen Datei das CSS automatisch auf die Seite angewendet. CSS-Module exportieren jedoch ein spezielles Standardobjekt “styles”, das deine ursprünglichen Klassennamen auf eindeutige Bezeichner abbildet.
CSS-Module helfen dir dabei, das Scoping und die Isolierung von Komponenten auf dem Frontend mit eindeutig generierten Klassennamen für deine Stylesheets durchzusetzen.
Andere Assets
Alle anderen, oben nicht explizit erwähnten Assets können über ESM import
importiert werden und geben einen URL-Verweis auf das fertige Asset zurück. Dies kann nützlich sein, um Nicht-JS-Assets per URL zu referenzieren, z.B. um ein Bildelement mit einem “src”-Attribut zu erstellen, das auf dieses Bild zeigt.
Es kann auch nützlich sein, Bilder in den Ordner public/
zu legen, wie auf der Projektstruktur-Seite erklärt.
Das Hinzufügen von Alt-Text zu <img>
-Tags wird aus Gründen der Zugänglichkeit empfohlen! Vergiss nicht, deinen Bildelementen das Attribut alt="eine hilfreiche Beschreibung"
hinzuzufügen. Du kannst das Attribut einfach leer lassen, wenn das Bild rein dekorativ ist.
Astro.glob()
Mit Astro.glob()
kannst du viele Dateien auf einmal importieren.
Astro.glob()
erlaubt nur einen Parameter: ein relatives Glob-Pattern, das zu den lokalen Dateien passt, die du importieren möchtest. Es ist asynchron und gibt ein Array mit den Exporten jeder passenden Datei zurück.
Astro-Komponenten, die mit Astro.glob
importiert werden, sind vom Typ AstroInstance
. Du kannst jede Komponenteninstanz mit ihrer Eigenschaft default
darstellen:
Glob Patterns
Ein Glob-Pattern ist ein Dateipfad, der spezielle Platzhalterzeichen unterstützt. Es wird verwendet, um auf mehrere Dateien in deinem Projekt gleichzeitig zu verweisen.
Das Glob-Pattern ./pages/**/*.{md,mdx}
beginnt beispielsweise im Unterverzeichnis pages
, durchsucht alle Unterverzeichnisse (/**
) und erfasst jeden Dateinamen (/*
), der entweder auf .md
oder .mdx
(.{md,mdx}
) endet.
Glob-Patterns in Astro
Um mit Astro.glob()
verwendet zu werden, muss das Glob-Pattern ein String-Literal sein und darf keine Variablen enthalten. Siehe die Anleitung zur Fehlerbehebung für eine andere Lösung.
Außerdem müssen Glob-Pattern mit einem der folgenden Zeichen beginnen:
./
(um im aktuellen Verzeichnis zu beginnen)../
(um im übergeordneten Verzeichnis zu beginnen)/
(um im Stammverzeichnis des Projekts zu beginnen)
Lies mehr über die Syntax des Glob-Pattern.
WASM
Astro unterstützt das Laden von WASM-Dateien direkt in deine Anwendung unter Verwendung der WebAssembly
API des Browsers.
Node Builtins
Wir empfehlen Astro-Benutzern, Node.js-Builtins (fs
, path
, etc.) wann immer möglich zu vermeiden. Astro soll in Zukunft mit mehreren JavaScript-Laufzeiten kompatibel sein. Dazu gehören Deno und Cloudflare Workers, die keine Node-Builtins wie fs
unterstützen.
Unser Ziel ist es, Astro-Alternativen zu gängigen Node.js-Builtins anzubieten. Allerdings gibt es davon bisher keine. Wenn du also wirklich diese eingebauten Module verwenden musst, halten wir dich nicht auf. Astro unterstützt Node.js-Builtins, die das neuere node:
-Präfix von Node verwenden. Wenn du z.B. eine Datei lesen willst, kannst du das folgendermaßen tun:
Erweiterung der Unterstützung von Dateitypen
Mit Vite und kompatiblen Rollup-Plugins kannst du Dateitypen importieren, die von Astro nicht nativ unterstützt werden. Wo du die benötigten Plugins findest erfährst du im Abschnitt Finding Plugins der Vite-Dokumentation.
In der Dokumentation deines Plugins findest du Informationen zu den Konfigurationsoptionen und zur korrekten Installation.
Beispiel: YAML-Unterstützung
Das Datenformat YAML (.yml
) wird von Astro nicht von Haus aus unterstützt, aber du kannst es mit einem kompatiblen Rollup-Plugin wie @rollup/plugin-yaml
hinzufügen:
-
Installiere
@rollup/plugin-yaml
: -
Importiere das Plugin in deine “astro.config.mjs” und füge es zum Array “Vite plugins” hinzu:
-
Zuletzt kannst du YAML-Daten mit einer Import-Anweisung importieren: