私はいくつかのテストを行いました、そしてこれは主題にいくつかの光を当てるかもしれません...
app.js
:
var ...
, routes = require('./routes')
...;
...
console.log('@routes', routes);
...
のバージョン/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] }"
新しいファイルも追加しました:
./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 {}」という出力が得られます
./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:{}、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(){};
変更すると、「@ routes {user:[Function:user]}」という出力が得られます user.js
すると{ ThisLoadedLast: [Function: ThisLoadedLast] }
、「@ routes {ThisLoadedLast:[Function:ThisLoadedLast]}」という出力が表示されます。
しかし、変更すると ./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:[関数:fn]}、ThisLoadedLast:{ThisLoadedLast:[関数:ThisLoadedLast]}}」が得られます
だから私は常に使用することをお勧めします module.exports
あなたのモジュール定義でをおします。
Nodeで内部的に何が起こっているのか完全には理解していませんが、これが役立つと確信しているので、これをもっと理解できるかどうかコメントしてください。
-ハッピーコーディング