Auf dieser Seite ( http://docs.nodejitsu.com/articles/getting-started/what-is-require ) heißt es: "Wenn Sie das Exportobjekt auf eine Funktion oder ein neues Objekt setzen möchten, müssen Sie dies tun." Verwenden Sie das Objekt module.exports. "
Meine Frage ist warum.
// right
module.exports = function () {
console.log("hello world")
}
// wrong
exports = function () {
console.log("hello world")
}
Ich habe das Ergebnis ( result=require(example.js)
) konsolidiert und das erste ist [Function]
das zweite {}
.
Könnten Sie bitte den Grund dafür erklären? Ich lese die Post hier: module.exports vs Exporte in Node.js . Es ist hilfreich, erklärt aber nicht den Grund, warum es so gestaltet ist. Wird es ein Problem geben, wenn die Referenz der Exporte direkt zurückgegeben wird?
exports
zum Beispiel github.com/tj/consolidate.js/blob/master/lib/consolidate.js ?
module.exports
, werden Sie sich nie irren, aber Sie können verwenden, exports
wenn Sie das exportierte Standardobjekt nicht ersetzen, dh wenn Sie einfach Eigenschaften wie diese anhängen : var foo = require('foo').foo
. Diese foo
Eigenschaft kann folgendermaßen exportiert werden: exports.foo = ...
und natürlich auch mit module.exports
. Es ist eine persönliche Entscheidung, aber ich benutze module.exports
und exports
angemessen.
module.exports
.