Modules
Module sind wiederverwendbare Codeteile, die Implementierungsdetails kapseln. Dabei sind Module meistens in einem File.
const diceP1 = rand(1, 6, 2);
const diceP2 = rand(1, 6, 2);
const scores = { diceP1, diceP2 }
Vorteile
Software zusammensetzen: Module sind kleine Bausteine, die wir zusammenfügen, um komplexe Anwendungen zu erstellen
Komponenten isolieren: Module können isoliert entwickelt werden, ohne an die gesamte Codebasis denken zu müssen
Code abstrahieren: Low-Level-Code in Modulen implementieren und diese Abstraktionen in andere Module importieren
Code organisieren: Module führen auf natürliche Weise zu einer besser organisierten Codebase
Code wiederverwenden: Module ermöglichen es uns, denselben Code einfach wiederzuverwenden, auch über mehrere Projekte hinweg
ES6 Modules
Bei ES6 Modulen beinhaltet eine Datei genau ein Modul.
Unterschiede: Modules vs. Scripts
Top-Level-Variablen
Auf Modul beschränkt
Global
Standardmodus
Strict Mode
"Sloppy" Mode
Top-Level this
undefined
window
Imports und Exports
× Nein
HTML-Linking
<script type="module">
<script>
Download
Asynchron
Synchron
Importieren und exportieren
Wir können ein File einfach über ein import
-Statement importieren.
import './shoppingCart.js';
console.log('Importing module');
Wie wir sehen können, wird also einfach der Code des importieren Files ausgeführt. Dabei spielt die Reihenfolge keine Rolle, da das import
-Statement sowieso gehoisted wird.
Weiter gibt es sogenannte Named Exports, das heisst, dass wir den Namen des zu importierenden Codes angeben müssen.
import { addToCart, , tq } from './shoppingCart.js';
addToCart('bread', 5);
addToCart('milk', 3);
console.log(price, tq);
Wir können auch das ganze Modul als Objekt importieren.
import * as ShoppingCart from './shoppingCart.js';
console.log(ShoppingCart.totalPrice);
Wir können auch Default-Exports machen. Diese können wir dann beim importieren nennen, wie wir wollen.
import log from './shoppingCart.js';
log();
Technisch ist es möglich Named-Exports und Default-Exports zu mischen, es ist jedoch nicht empfohlen!
CommonJS
CommonJS Imports und Export wurden vor allem in Node.js gebraucht und sind dadurch auch heute noch weit verbreitet.
const { addToCart } = require(./shoppingCart.js);
Zuletzt aktualisiert