Trên trang này ( http://docs.nodejitsu.com/articles/getting-started/what-is-require ), nó nói rằng "Nếu bạn muốn đặt đối tượng xuất khẩu thành một chức năng hoặc một đối tượng mới, bạn phải sử dụng đối tượng module.exports. "
Câu hỏi của tôi là tại sao.
// right
module.exports = function () {
console.log("hello world")
}
// wrong
exports = function () {
console.log("hello world")
}
Tôi console.logged kết quả ( result=require(example.js)
) và cái đầu tiên là [Function]
cái thứ hai {}
.
Bạn có thể vui lòng giải thích lý do đằng sau nó? Tôi đọc bài viết ở đây: module.exports vs xuất khẩu trong Node.js . Nó rất hữu ích, nhưng không giải thích lý do tại sao nó được thiết kế theo cách đó. Sẽ có một vấn đề nếu tham chiếu xuất khẩu được trả lại trực tiếp?
exports
, ví dụ github.com/tj/consolidate.js/blob/master/lib/consolidate.js ?
module.exports
, bạn sẽ không bao giờ sai, nhưng bạn có thể sử dụng exports
nếu bạn không thay thế đối tượng được xuất mặc định, nghĩa là, nếu bạn chỉ đính kèm các thuộc tính như thế này : var foo = require('foo').foo
. Tài foo
sản này có thể được xuất khẩu như thế này: exports.foo = ...
và tất nhiên cũng với module.exports
. Đó là một lựa chọn cá nhân nhưng tôi hiện đang sử dụng module.exports
và exports
thích hợp.
module.exports
.