Na tej stronie ( http://docs.nodejitsu.com/articles/getting-started/what-is-require ) stwierdza się, że „Jeśli chcesz ustawić obiekt eksportu na funkcję lub nowy obiekt, musisz: użyj obiektu module.exports. ”
Moje pytanie brzmi: dlaczego.
// right
module.exports = function () {
console.log("hello world")
}
// wrong
exports = function () {
console.log("hello world")
}
I console.logged wynik ( result=require(example.js)
), a pierwszy to [Function]
drugi {}
.
Czy mógłbyś wyjaśnić przyczynę? Czytałem post tutaj: module.exports vs eksportu w node.js . Jest to pomocne, ale nie wyjaśnia powodu, dla którego został zaprojektowany w ten sposób. Czy wystąpi problem, jeśli odniesienie do eksportu zostanie zwrócone bezpośrednio?
exports
, na przykład github.com/tj/consolidate.js/blob/master/lib/consolidate.js ?
module.exports
, nigdy nie będzie źle, ale można użyć exports
, jeśli nie jesteś zastąpienie domyślnego eksportowany obiekt, to znaczy, jeśli po prostu dołączyć właściwości tak: var foo = require('foo').foo
. Tę foo
właściwość można wyeksportować w następujący sposób: exports.foo = ...
i oczywiście również za pomocą module.exports
. To osobisty wybór, ale obecnie go używam module.exports
i exports
odpowiednio.
module.exports
.