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ę foowł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.exportsi exportsodpowiednio.
module.exports.