Bazı testlerden geçtim ve bence bu konuya ışık tutabilir ...
app.js
:
var ...
, routes = require('./routes')
...;
...
console.log('@routes', routes);
...
sürümleri /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] }"
Yeni dosyalar bile ekledim:
./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(){};
"@Routes {}" çıktısını alıyoruz
./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(){};
"@Routes {fn: {}, kullanıcı: {}}" çıktısını alıyoruz
./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(){};
Biz çıkış olsun "@routes {kullanıcıyı: [Fonksiyon: kullanıcı]}" Biz değiştirirseniz user.js
için { ThisLoadedLast: [Function: ThisLoadedLast] }
, biz çıktı olsun "@routes {ThisLoadedLast: [Fonksiyon: ThisLoadedLast]}".
Ama değiştirirsek ./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(){};
... "@routes {fn: {fn: [İşlev: fn]}, ThisLoadedLast: {ThisLoadedLast: [İşlev: ThisLoadedLast]}}"
Bu yüzden her zaman kullanmanızı öneririm module.exports
modül tanımlarınızda .
Node ile dahili olarak neler olup bittiğini tam olarak anlamıyorum, ancak bunun daha mantıklı olduğunu düşünüyorsanız lütfen yorum yapın.
- Mutlu kodlama