← Zurück zum Glossar

Webdesign · Entwicklung · SEO

ES-Module

ES-Module erklärt: JavaScript gezielt aufteilen | scinet

Redaktionell geprüft ·

Verständlich erklärt

ES-Module sind das standardisierte Modulsystem von JavaScript. Eine Datei kann gezielt Funktionen oder Werte exportieren; eine andere importiert genau diese Schnittstelle. ES steht für ECMAScript, den Sprachstandard hinter JavaScript.

Stell dir eine Website mit Navigation, Formular und Terminanzeige vor. Du möchtest nicht jede Funktion in einer einzigen großen Datei suchen. Module helfen dir, die Aufgaben zu trennen und ihre Abhängigkeiten sichtbar zu machen. Die sinnvolle Aufteilung nimmt dir das Modulsystem aber nicht ab.

Was import und export verbinden

Eine Funktion zur Formatierung eines Datums kann in einer eigenen Datei stehen. Mit export legst du fest, dass andere Module sie verwenden dürfen. Die aufrufende Datei nennt beim import den Namen und den Modulpfad. Lokale Hilfswerte müssen dadurch nicht als globale Variablen verfügbar sein.

Benannte Exporte und ein Standardexport sind unterschiedliche Schreibweisen. Die Importform muss zur exportierten Schnittstelle passen. Wer beim Update einer Bibliothek nur den Dateinamen austauscht, kann deshalb trotzdem einen Fehler bekommen. Prüfe auch, welche Namen das neue Modul tatsächlich bereitstellt.

Auf einen Blick

format.js: export: Datumsdarstellung. navigation.js: export: Navigation einrichten. formular.js: export: Formular einrichten
Klare Schnittstellen verbinden getrennte Aufgaben. app.js importiert die benötigten Exporte. Linien zeigen Abhängigkeiten, keine zeitliche Reihenfolge.Infografik in voller Größe öffnen

So startet ein Modul im Browser

Der Einstieg erfolgt beispielsweise mit einem script-Element, das type="module" und den Pfad zur Startdatei enthält. Von dort werden weitere Abhängigkeiten geladen. Relative Importe wie ./format.js beziehen sich auf die importierende Datei. Ein bloßer Paketname braucht im Browser eine passende Auflösung, etwa über eine Import Map oder einen Build.

Teste solche Dateien über einen lokalen Webserver. Beim direkten Öffnen per file:// können Sicherheitsregeln das Laden verhindern. Auf dem Server müssen außerdem passende JavaScript-Inhaltstypen und bei fremden Ursprüngen die notwendigen CORS-Freigaben stimmen.

Was Module bei der Pflege verbessern können

Ich würde Dateien nach nachvollziehbaren Aufgaben aufteilen: etwa eine Funktion für Datumsdarstellung und eine für das Öffnen der Navigation. Eine Änderung an der Darstellung soll nicht versehentlich die Navigation beeinflussen. Kleine, klare Schnittstellen machen solche Grenzen leichter prüfbar.

Module sind dabei kein automatisches Versprechen für weniger Downloadvolumen. Ein Build kann ungenutzten Code unter geeigneten Bedingungen entfernen; die tatsächliche Ausgabe muss trotzdem geprüft werden. Auch viele kleine Netzwerkabrufe sind eine Frage der konkreten Auslieferung. Entscheide anhand des Projekts, ob native Module ausreichen oder zusätzliche Build-Werkzeuge helfen.

Passend dazu: JavaScript · Bootstrap · Bootstrap 6 Alpha im Vergleich.

Codebeispiel aus der Praxis

JS

Eine Funktion exportieren und importieren

Eigenes Beispiel mit zwei getrennten Dateien im selben Ordner. app.js wird über <script type="module" src="./app.js"></script> eingebunden.

// format.js
export function formatDate(value) {
  return new Intl.DateTimeFormat("de-DE").format(value);
}

// app.js (separate Datei)
import { formatDate } from "./format.js";
console.log(formatDate(new Date()));

Quellen und weiterführende Informationen

  1. Dokumentation JavaScript modules MDN Web Docs · Geprüft
  2. Dokumentation import MDN Web Docs · Geprüft
  3. Dokumentation export MDN Web Docs · Geprüft

Häufige Fragen

Nein. Das Modulsystem gehört zu JavaScript und wird von modernen Browsern unterstützt. Ein Framework kann es nutzen, ist dafür aber keine Voraussetzung.

Eine als Modul ausgelieferte Datei kann import oder export enthalten. Ein klassischer script-Tag verarbeitet sie nicht als Modul. Prüfe type="module", den Dateipfad und die Einbindungsanleitung der verwendeten Bibliothek.