Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Mai 2018 browserübergreifend verfügbar.
Die export-Deklaration wird verwendet, um Werte aus einem JavaScript-Modul zu exportieren. Exportierte Werte können dann in andere Programme mit der import-Deklaration oder durch dynamischen Import importiert werden. Der Wert einer importierten Bindung kann sich im Modul, das es exportiert, ändern — wenn ein Modul den Wert einer Bindung aktualisiert, die es exportiert, wird die Aktualisierung im importierten Wert sichtbar.
Um die export-Deklaration in einer Quelldatei zu verwenden, muss die Datei von der Laufzeit als Modul interpretiert werden. Dies wird in HTML durch das Hinzufügen von type="module" zum <script>-Tag erreicht oder indem die Datei von einem anderen Modul importiert wird. Module werden automatisch im Strict Mode interpretiert.
Bezeichner, der exportiert werden soll (damit er über import in einem anderen Skript importiert werden kann). Wenn Sie ein Alias mit as verwenden, kann der tatsächlich exportierte Name als Zeichenfolgenliteral angegeben werden, das möglicherweise kein gültiger Bezeichner ist.
Jedes Modul kann zwei verschiedene Arten von Exporten haben: Named Export und Default Export. Sie können mehrere Named Exports pro Modul haben, aber nur einen Default Export. Jeder Type entspricht einer der obigen Syntaxe.
Named Exports:
Nach dem export-Schlüsselwort können let-, const- und var-Deklarationen sowie Funktions- oder Klassendeklarationen verwendet werden. Sie können auch die export { name1, name2 }-Syntax verwenden, um eine Liste von Namen zu exportieren, die anderswo deklariert wurden. Beachten Sie, dass export {} kein leeres Objekt exportiert — es ist eine Nicht-Operation-Deklaration, die nichts exportiert (eine leere Namensliste).
Sie können export nicht für eine using- oder await using-Deklaration verwenden. Sie können jedoch eine Variable exportieren, die anderswo mit using oder await using deklariert wurde. Dies wird jedoch dringend abgeraten, da die Variable entsorgt wird, sobald das Modul fertig ist, was dazu führt, dass alle Importeure einen schon entsorgten Wert erhalten.
Export-Deklarationen unterliegen nicht den temporal dead zone-Regeln. Sie können deklarieren, dass das Modul X exportiert, bevor der Name X selbst deklariert ist.
Default Exports:
Hinweis: Namen für Export-Deklarationen müssen sich voneinander unterscheiden. Exporte mit doppelten Namen oder die Nutzung von mehr als einem default-Export führen zu einem SyntaxError und hindern das Modul daran, ausgewertet zu werden.
Die export default-Syntax erlaubt jeden Ausdruck.
Als Spezialfall werden Funktionen und Klassen als Deklarationen exportiert, nicht als Ausdrücke, und diese Deklarationen können anonym sein. Das bedeutet, dass Funktionen gehoben werden.
Named Exports sind nützlich, wenn Sie mehrere Werte exportieren müssen. Beim Import dieses Moduls müssen Named Exports mit genau dem gleichen Namen angesprochen werden (optional kann dieser mit as umbenannt werden), aber der Default-Export kann mit jedem beliebigen Namen importiert werden. Zum Beispiel:
Sie können auch Named Exports umbenennen, um Namenskonflikte zu vermeiden:
Sie können einen Namen in etwas umbenennen, das kein gültiger Bezeichner ist, indem Sie ein Zeichenfolgenliteral verwenden. Zum Beispiel:
Ein Modul kann auch die von anderen Modulen exportierten Werte weiterleiten, ohne zwei separate Import/Export-Deklarationen schreiben zu müssen. Dies ist oft nützlich, wenn ein einzelnes Modul erstellt wird, das verschiedene Exporte aus verschiedenen Modulen bündelt (häufig als "Barrel-Modul" bezeichnet).
Dies kann mit der "export from"-Syntax erreicht werden:
Dies ist vergleichbar mit einer Kombination aus Import und Export, außer dass function1 und function2 im aktuellen Modul nicht zur Verfügung stehen:
Die meisten der "import from"-Syntaxen haben "export from"-Gegenstücke.
Es gibt auch export * from "mod", obwohl es kein import * from "mod" gibt. Dies exportiert alle Named Exporte von mod als Named Exporte des aktuellen Moduls weiter, aber der Default-Export von mod wird nicht weiterexportiert. Wenn es zwei Wildcard-Export-Aussagen gibt, die denselben Namen implizit weiterexportieren, wird keiner von ihnen weiterexportiert.
Der Versuch, den doppelten Namen direkt zu importieren, wird einen Fehler verursachen.
Folgendes ist trotz der importäquivalenten Syntax syntaktisch ungültig:
Der korrekte Weg, dies zu tun, ist der Export umzubenennen:
Die "export from"-Syntax erlaubt es, das as-Token wegzulassen, wodurch der Default-Export trotzdem als Default-Export weiterexportiert wird.
export from unterstützt alle Funktionen, die import unterstützt — beispielsweise Importattribute:
In einem Modul my-module.js könnten wir den folgenden Code einfügen:
Dann könnten wir im Top-Level-Modul, das in Ihre HTML-Seite eingebunden ist, Folgendes haben:
Beachten Sie Folgendes:
Wenn wir einen einzigen Wert exportieren möchten, der ein ganzes Modul darstellt, könnten wir einen Default-Export verwenden:
Dann ist es in einem anderen Skript unkompliziert, den Default-Export zu importieren:
Nehmen wir ein Beispiel, in dem wir die folgende Hierarchie haben:
So würde es in Code-Snippets aussehen:
| ECMAScript® 2027 Language Specification # sec-exports |
JavaScript aktivieren, um diese Browser-Kompatibilitätstabelle anzuzeigen.
Der Bauplan für ein besseres Internet.
Besuche die gemeinnützige Muttergesellschaft der Mozilla Corporation, die Mozilla Foundation.
Teile dieses Inhalts sind ©1998–2026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfügbar unter einer Creative-Commons-Lizenz.