✅ exports와 module.exports 비교
Node.js가 사용하는 CommonJS 방식으로 모듈을 선언하는 것은 exports와 module.exports의 두 가지 방법이 존재한다.
✔️ exports
--- a.js ---
exports.A = (a, b) => a + b;
--- b.js ---
const Func = require('./a');
console.log(Func);
console.log(Func.A(1, 2));
// output
// { A: [Function (anonymous)] }
// 3
a.js에서 A라는 함수를 exports 했고 이를 b.js에서 require해 Func로 받아왔다.
이때 Func를 출력해보면 객체 안에 A라는 함수가 담겨있는 것을 확인할 수 있다.
따라서 A라는 함수를 b.js에서 사용하기 위해서는 Func.A로 접근해야 한다.
✔️ module.exports
--- a.js ---
const A = (a, b) => a + b;
module.exports = A;
--- b.js ---
const Func = require("./a");
console.log(Func);
console.log(Func(1, 2));
// output
// [Function: A]
// 3
a.js에서 A라는 함수를 선언한 뒤 module.exports 했고 이를 b.js에서 require해 Func로 받아왔다.
이때 Func를 출력하면 바로 Function: A라고 출력되는 것을 확인할 수 있다.
exports와 달리 Func가 함수 A의 역할을 하고 Func에 인자를 넘기면 바로 A 함수를 계산한 결과가 담기는 것을 볼 수 있다.
✔️ 비교
exports가 call by reference로 module.exports를 바라보고 있고 리턴되는 값은 항상 module.exports이다.
exports는 결국 module.exports = { }와 동일하다고 볼 수 있다.
exports.A = (a, b) => a + b;
module.exports = {
A: (a, b) => a + b;
}
따라서 exports로 선언했을 때 다른 파일에서 이 함수 혹은 변수를 가져다 쓰려면 require한 객체 안에 접근해야 한다.
🔍 참조
module.exports와 export의 차이점 https://programmingsummaries.tistory.com/340
'Node.js' 카테고리의 다른 글
boilerplate(server) - 로그아웃 기능 만들기 (0) | 2021.05.11 |
---|---|
boilerplate(server) - Authentication 기능 만들기 (0) | 2021.05.11 |
boilerplate(server) - 로그인 기능 만들기 (0) | 2021.05.11 |
boilerplate(server) - 회원가입 기능 만들기 (0) | 2021.05.08 |
bcrypt - 암호 해시 함수 (0) | 2021.05.08 |
댓글