Pada halaman ini ( http://docs.nodejitsu.com/articles/getting-started/what-is-require ), ini menyatakan bahwa "Jika Anda ingin mengatur objek ekspor ke fungsi atau objek baru, Anda harus gunakan objek module.exports. "
Pertanyaan saya adalah mengapa.
// right
module.exports = function () {
console.log("hello world")
}
// wrong
exports = function () {
console.log("hello world")
}
Saya console.logged hasilnya ( result=require(example.js)
) dan yang pertama adalah [Function]
yang kedua {}
.
Bisakah Anda jelaskan alasan di baliknya? Saya membaca posting di sini: module.exports vs ekspor di Node.js . Ini membantu, tetapi tidak menjelaskan alasan mengapa itu dirancang sedemikian rupa. Apakah akan ada masalah jika referensi ekspor dikembalikan secara langsung?
exports
, misalnya github.com/tj/consolidate.js/blob/master/lib/consolidate.js ?
module.exports
, Anda tidak akan pernah salah, namun Anda dapat menggunakan exports
jika Anda tidak mengganti default diekspor objek, yaitu, jika Anda hanya melampirkan sifat seperti ini: var foo = require('foo').foo
. foo
Properti ini dapat diekspor seperti ini: exports.foo = ...
dan tentu saja dengan module.exports
. Ini pilihan pribadi, tetapi saya saat ini menggunakan module.exports
dan exports
tepat.
module.exports
.