2016-11-25 2 views
0

Ich las this article von Axel Rauschmayer, und fragen, speziell über die folgenden sentencs:Was bedeutet "das Original-Export-Objekt" in commonjs?

Node.js-Stil Single-Wert Exporte nicht funktionieren. In Node.js können Sie einzelne Werte anstelle von Objekten wie folgt exportieren: module.exports = function() {...} Wenn Sie das in Modul A getan hätten, könnten Sie das exportierte nicht verwenden Funktion in Modul B, weil die Variable A von b noch auf das ursprüngliche Export-Objekt von A verweist.

was bedeutet es von "A's original exports object" ??

+0

Es bezieht sich in diesem Satz auf das CommonJS-System, nicht auf NodeJS, und das ursprüngliche Exportobjekt ist das Objekt, das Sie zu überschreiben versuchten, als Sie 'module.exports = function {...}' ausgeführt haben. Mit anderen Worten, in "B" importiert das Importieren von "A" diese Funktion nur, wenn Sie es * einer Eigenschaft von "module.exports" in "A" zuweisen. In NodeJS hingegen erhalten Sie, wenn vorhanden, den Wert, der direkt 'module.exports' zugewiesen wurde. –

+0

@squint danke für die Kommentare. Gibt es Unterschiede zwischen Nodejs und CommonJS in Bezug auf "Export"? aber es steht geschrieben 'In Node.js können Sie einzelne Werte anstelle von Objekten wie folgt exportieren: module.exports = function() {...} Wenn Sie das in Modul A getan hätten, wären Sie nicht in der Lage zu verwenden die exportierte Funktion in Modul B' – Blake

+0

Entschuldigung, ich denke, ich bin ein wenig abseits in meinem Kommentar oben. Es bezieht sich auf zyklische Abhängigkeiten, also denke ich, dass sie sagen, dass es eine Grenze für das gibt, was Sie in dieser Situation importieren. Wenn Sie also 'module.exports' mit einem Wert in A überschreiben, der B importierte, der A importiert, haben Sie in B keinen Zugriff auf den überschriebenen Wert 'exports' von A, weil B * vor dem * geladen worden wäre Das Überschreiben fand statt, also erhält es den ursprünglichen Wert von 'module.exports' (das ursprüngliche Objekt) anstelle des überschriebenen Wertes. –

Antwort

0

Jedes Modul in commonjs (node.js) exportiert einen vom Modulsystem erstellten Standard exports object, den Sie als leeres Objekt betrachten können (obwohl es nicht wirklich leer ist).

Der Autor nannte dieses Standardexportobjekt eine original exports object.

+0

warum so 'module.exports = function() {...}' des Exports funktioniert nicht ?? – Blake