나는 몇 가지 테스트를 겪었으며 이것이 주제에 약간의 빛을 비출 수 있다고 생각합니다 ...
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에서 내부적으로 무슨 일이 일어나고 있는지 완전히 이해하지 못하지만 도움이 될 것으로 확신 할 수 있다면 의견을 말하십시오.
-행복한 코딩