참조
https://www.zerocho.com/category/NodeJS/post/5835b500373b5b0018a81a10
https://www.daleseo.com/js-module-require
모듈을 내보낼 때 헷갈리는 또 한가지로 exports와 module.exports가 있다.
배울 때는 감으로 어느 정도 알겠다가도 코드를 칠 때 다시 헷갈리는 부분이 있어서 정리를 한다.
우선 이 두가지 중 골라서 사용할 때 생각할 수 있는 간단한 방법으로는
1. 여러 개의 객체를 내보낼 경우, exports 변수의 속성으로 할당한다.
2. 딱 하나의 객체를 내보낼 경우, module.exports 변수 자체에 할당한다.
이렇게 생각하고 사용하는 게 우선 편한 것 같다.
이 두가지 내보내기에 대한 것에 대해 정리하면 다음과 같다.
// module.js
var template = {
a: 'a',
b: 'b'
}
module.exports = template;
// 또는
module.exports = {
a: 'a',
b: 'b'
}
// 사용: test.js
var template = require('test.js');
console.log(template.a);
// a ```
2. exports
```javascript
// module.js
var template = {
a: 'a',
b: 'b'
}
exports.foo = template;
// 또는
exports.foo = {
a: 'a',
b: 'b'
}
// 사용: test.js
var template = require('test.js);
console.log(template.foo.a);
// a
var module = {exports: {}}
var exports = module.exports;
/* exports객체는 module.exports와 같음
exports 객체는 module.exports 객체를 call by reference방식으로 바라보고 있음
var template = { a: 'a', b: 'b' }
module.exports.foo = template //(o)
module.exports = template //(o)