Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Kombination von CommonJS und ES-Modulen | Abschnitt
Node.js-Grundlagen

bookKombination von CommonJS und ES-Modulen

Swipe um das Menü anzuzeigen

Bei der Arbeit an Node.js-Projekten kann es vorkommen, dass sowohl CommonJS- als auch ES-Module im selben Codebestand verwendet werden. Node.js nutzte ursprünglich CommonJS (require/module.exports), unterstützt aber inzwischen auch ES-Module (import/export). Das Mischen dieser beiden Systeme kann aufgrund von Unterschieden in Syntax, Dateiendungen und Ladeverhalten herausfordernd sein. Kompatibilitätsprobleme entstehen, weil nicht alle Funktionen verfügbar sind, wenn ein Modultyp in einen anderen importiert wird. Es ist wichtig, die Strategien für die gleichzeitige Nutzung beider Systeme sowie die möglichen Einschränkungen zu verstehen.

Eine gängige Strategie besteht darin, ein primäres Modulsystem für das Projekt festzulegen und Kompatibilitätsfunktionen nur bei Bedarf zu verwenden. Beispielsweise kann der Großteil des Codes aus Kompatibilitätsgründen mit älteren Tools in CommonJS gehalten werden, während für neueren Code oder für Funktionen wie import.meta.url ES-Module genutzt werden. Node.js ermöglicht es, den Modultyp in der Datei package.json über das Feld "type" festzulegen: "commonjs" oder "module". Dateien mit der Endung .cjs werden immer als CommonJS behandelt, während .mjs-Dateien stets als ES-Module gelten, unabhängig vom Wert des Feldes "type". Dies bietet Flexibilität beim Mischen von Modultypen innerhalb eines Projekts, jedoch sollten die Einschränkungen und Unterschiede beim Laden und Ausführen von Modulen beachtet werden.

math.cjs

math.cjs

app.mjs

app.mjs

copy

Das Codebeispiel zeigt, wie ein CommonJS-Modul innerhalb eines ES-Moduls in Node.js verwendet werden kann. Die Datei math.cjs nutzt die CommonJS-Syntax und exportiert eine add-Funktion mit module.exports.add = (a, b) => a + b;. Diese Funktion addiert zwei Zahlen und gibt das Ergebnis zurück.

Die Datei app.mjs ist ein ES-Modul. ES-Module können require nicht direkt verwenden, daher wird die Funktion createRequire aus dem eingebauten Paket module importiert. Durch den Aufruf von createRequire(import.meta.url) wird eine require-Funktion erzeugt, die im Kontext der aktuellen ES-Modul-Datei funktioniert. Mit dieser require-Funktion wird dann das CommonJS-Modul (math.cjs) importiert.

Beim Aufruf von math.add(2, 3) gibt der Code 5 in der Konsole aus. Dieser Ansatz ermöglicht es, CommonJS- und ES-Module im selben Projekt zu kombinieren und die jeweiligen Vorteile beider Systeme gezielt zu nutzen.

question mark

Wann sollte CommonJS anstelle von ES-Modulen in einem Node.js-Projekt gewählt werden?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 1. Kapitel 17

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 1. Kapitel 17
some-alt