Javascript: "script type='module '" Was ist das?
bearbeitet von
Hallo T-Rex,
die Quelle, die PL verlinkt, wäre auch meine gewesen.
TL;DR: type="module" ist ein Feature von ECMAScript 6 (a.k.a. ECMAScript 2015), das erste Release des "Harmony" Projekts, das seit 2015 jährlich eine neue JS Version spezifiziert.
Die Idee von Modulen gibt's schon länger. Unser Wiki hat da einen recht alten Stand, das "Revealing Module Pattern", in dem man das, was ES6 mit type=module bietet, noch per Hand baut.
Es gibt auch diverse Javascript Libraries, wie z.B. require.js, die das Modulkonzept anbieten. Auch da musst Du Dich strikt an bestimmte Programmiermuster halten, damit das funktioniert.
Aber ES6 Module machen es im Prinzip genauso.
- Ein Modul exportiert bestimmte Objekte. Das können einfach nur Objekte sein, aber auch Konstruktoren für Funktionen.
- Ein Modul importiert optional andere Module und verwendet deren Exporte.
- Was ein Modul NICHT exportiert, ist im Modul privat.
- Genau wie bei klassischen Tools wie require.js gibt es Tools zum Bundling und Minifizieren von ES6 Modulen, damit eine Application, die aus 20 Modulen besteht, effizient geladen werden kann.
Damit eine .js Datei (oder besser: .mjs) als Modul geladen wird, muss es mit type="module" geladen werden. Script, das ins HTML eingebettet ist, ist per Definition kein Modul, ~~kann also keinen import verwenden~~ kann also nichts exportieren. Ein inline-<script type="module"> ist aber möglich, um andere Module zu importieren
*Edit nach dem Hinweis aus der Unterwelt*
_Rolf_
--
sumpsi - posui - obstruxi
Javascript: "script type='module '" Was ist das?
bearbeitet von
Hallo T-Rex,
die Quelle, die PL verlinkt, wäre auch meine gewesen.
TL;DR: type="module" ist ein Feature von ECMAScript 6 (a.k.a. ECMAScript 2015), das erste Release des "Harmony" Projekts, das seit 2015 jährlich eine neue JS Version spezifiziert.
Die Idee von Modulen gibt's schon länger. Unser Wiki hat da einen recht alten Stand, das "Revealing Module Pattern", in dem man das, was ES6 mit type=module bietet, noch per Hand baut.
Es gibt auch diverse Javascript Libraries, wie z.B. require.js, die das Modulkonzept anbieten. Auch da musst Du Dich strikt an bestimmte Programmiermuster halten, damit das funktioniert.
Aber ES6 Module machen es im Prinzip genauso.
- Ein Modul exportiert bestimmte Objekte. Das können einfach nur Objekte sein, aber auch Konstruktoren für Funktionen.
- Ein Modul importiert optional andere Module und verwendet deren Exporte.
- Was ein Modul NICHT exportiert, ist im Modul privat.
- Genau wie bei klassischen Tools wie require.js gibt es Tools zum Bundling und Minifizieren von ES6 Modulen, damit eine Application, die aus 20 Modulen besteht, effizient geladen werden kann.
Damit eine .js Datei (oder besser: .mjs) als Modul geladen wird, muss es mit type="module" geladen werden. Script, das ins HTML eingebettet ist, ist per Definition kein Modul, kann also keinen import verwenden.
_Rolf_
--
sumpsi - posui - obstruxi