Nesta página ( http://docs.nodejitsu.com/articles/getting-started/what-is-require ), afirma que "Se você deseja definir o objeto de exportação para uma função ou um novo objeto, é necessário use o objeto module.exports. "
Minha pergunta é o porquê.
// right
module.exports = function () {
console.log("hello world")
}
// wrong
exports = function () {
console.log("hello world")
}
Eu console.logging o resultado ( result=require(example.js)
) e o primeiro é [Function]
o segundo é {}
.
Poderia explicar o motivo por trás disso? Eu li o post aqui: module.exports vs exportações em Node.js . É útil, mas não explica o motivo pelo qual foi projetado dessa maneira. Haverá um problema se a referência das exportações for retornada diretamente?
exports
, por exemplo, github.com/tj/consolidate.js/blob/master/lib/consolidate.js ?
module.exports
, você nunca vai estar errado, mas você pode usar exports
se você não está substituindo o padrão exportados objeto, isto é, se você simplesmente anexar propriedades como esta: var foo = require('foo').foo
. Esta foo
propriedade pode ser exportada assim: exports.foo = ...
e, claro, também com module.exports
. É uma escolha pessoal, mas atualmente estou usando module.exports
e de forma exports
adequada.
module.exports
.