Tôi đã trải qua một số thử nghiệm và tôi nghĩ rằng điều này có thể làm sáng tỏ chủ đề này ...
app.js
:
var ...
, routes = require('./routes')
...;
...
console.log('@routes', routes);
...
phiên bản của /routes/index.js
:
exports = function fn(){}; // outputs "@routes {}"
exports.fn = function fn(){}; // outputs "@routes { fn: [Function: fn] }"
module.exports = function fn(){}; // outputs "@routes function fn(){}"
module.exports.fn = function fn(){}; // outputs "@routes { fn: [Function: fn] }"
Tôi thậm chí đã thêm các tập tin mới:
./routes/index.js
:
module.exports = require('./not-index.js');
module.exports = require('./user.js');
./routes/not-index.js
:
exports = function fn(){};
./routes/user.js
:
exports = function user(){};
Chúng tôi nhận được đầu ra "@routes {}"
./routes/index.js
:
module.exports.fn = require('./not-index.js');
module.exports.user = require('./user.js');
./routes/not-index.js
:
exports = function fn(){};
./routes/user.js
:
exports = function user(){};
Chúng tôi nhận được đầu ra "@routes {fn: {}, user: {}}"
./routes/index.js
:
module.exports.fn = require('./not-index.js');
module.exports.user = require('./user.js');
./routes/not-index.js
:
exports.fn = function fn(){};
./routes/user.js
:
exports.user = function user(){};
Chúng tôi nhận được đầu ra "@routes {user: [Function: user]}" Nếu chúng tôi thay đổi user.js
thành { ThisLoadedLast: [Function: ThisLoadedLast] }
, chúng tôi sẽ nhận được đầu ra "@routes {ThisLoadedLast: [Function: ThisLoadedLast]}".
Nhưng nếu chúng ta sửa đổi ./routes/index.js
...
./routes/index.js
:
module.exports.fn = require('./not-index.js');
module.exports.ThisLoadedLast = require('./user.js');
./routes/not-index.js
:
exports.fn = function fn(){};
./routes/user.js
:
exports.ThisLoadedLast = function ThisLoadedLast(){};
... chúng tôi nhận được "@routes {fn: {fn: [Function: fn]}, ThisLoadedLast: {ThisLoadedLast: [Function: ThisLoadedLast]}}"
Vì vậy, tôi sẽ đề nghị luôn luôn sử dụng module.exports
trong định nghĩa mô-đun của bạn.
Tôi hoàn toàn không hiểu những gì đang diễn ra bên trong với Node, nhưng vui lòng bình luận nếu bạn có thể hiểu rõ hơn về điều này vì tôi chắc chắn rằng nó sẽ giúp ích.
- Mã hóa hạnh phúc