In Node.js haben exports
und module.exports
wichtige Rollen. Beide sind Objekte, die zum Exportieren von Codebausteinen aus einer Datei verwendet werden. Obwohl sie zunächst ähnlich erscheinen, gibt es doch einige grundlegende Unterschiede zwischen ihnen, die wir in diesem Artikel behandeln werden.
Zunächst einmal ist exports
tatsächlich eine Abkürzung für module.exports
. Beim Erstellen einer neuen Datei in Node.js wird exports
initialisiert, indem es auf module.exports
gesetzt wird. Das bedeutet, dass beide anfangs auf dasselbe leere Objekt verweisen.
Wenn Sie also Module mithilfe von exports
hinzufügen, fügen Sie auch Module zu module.exports
hinzu. Denken Sie daran, dass, obwohl exports
und module.exports
anfangs auf dasselbe Objekt verweisen, sie nicht dauerhaft verknüpft sind. Wenn Sie also module.exports
zu einem neuen Objekt machen, ist exports
nicht länger eine Abkürzung für module.exports
.
Ein wesentlicher Vorteil von exports
ist, dass es als Objekt fungiert, das mehrere Funktionen, Werte oder Objekte enthalten kann. Dies ist besonders nützlich, wenn Sie verschiedene Dinge aus Ihrer Node.js-Datei exportieren müssen.
exports.functionOne = () => {...}
exports.functionTwo = () => {...}
In diesem Codebeispiel werden zwei Funktionen zu exports
hinzugefügt. Diese könnten dann in einem anderen Teil Ihrer Anwendung importiert und verwendet werden.
Im Gegensatz zu exports
kann module.exports
nur ein einziges Objekt, eine Funktion oder einen Wert exportieren. Trotz dieser Einschränkung ist es jedoch wichtig zu beachten, dass module.exports
ein einzelnes Objekt exportieren kann, das mehrere Funktionen oder Werte enthält.
module.exports = {
functionOne: () => {...},
functionTwo: () => {...}
}
In diesem Beispiel enthält module.exports
ein Objekt, das zwei Funktionen beinhaltet. Während es den Anschein hat, dass mehrere Funktionen exportiert werden, wird tatsächlich nur ein Objekt exportiert.
Zusammenfassend lässt sich sagen, dass exports
ideal ist, wenn mehrere, voneinander unabhängige Entitäten exportiert werden sollen. Wenn Sie jedoch eine klar definierte Struktur mit mehreren Funktionen oder Werten haben, die miteinander verbunden sein sollten, ist module.exports
in der Regel die bessere Wahl.