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 exportsse você não está substituindo o padrão exportados objeto, isto é, se você simplesmente anexar propriedades como esta: var foo = require('foo').foo. Esta foopropriedade pode ser exportada assim: exports.foo = ...e, claro, também com module.exports. É uma escolha pessoal, mas atualmente estou usando module.exportse de forma exportsadequada.
module.exports.