Node.js
[Node.js] 모듈 require(), Exports, Module.exports
지은이: 김지은
2023. 3. 28. 22:52
728x90
모듈이란?
기능별로 변수나 함수를 나누어서 캡슐화한 것으로 여러 개의 코드로 분할하여 코드 관리하기 쉬워지고 재사용도 가능하다.
모듈은 exports나 module.exports 객체를 통해 추출하고 require함수로 import 하여 추출된 모듈을 사용할 수 있다.
module.exports
module.exports는 require() 함수를 사용할 때 반환받는 변수로 빈 객체가 기본값.
module.exports로 모듈로 만들 값을 지정해 주는데 exports 키에 추출할 변수, 함수들을 객체 자체로 할당해 추출
//Module 구조
Module {
id: '.',
path: '/',
exports: {}, //module 객체의 exports에 우리가 추출할 값을 직접 할당
filename: '/app.js',
loaded: false, children: [],
paths: [
'/Users/node_modules',
'/node_modules'
]
}
const odd = '홀수';
const even = '짝수';
module.exports = { odd, even };
객체를 통째로 exports 하기
module.exports = {
area: width => Math.pow(width. 2).
perimeter: width => width * 4,
};
exports
exports는 module.exports를 참조하며 객체 자체를 할당하는 게 아니라 프로퍼티 객체를 할당한다.
exports.odd = '홀수';
exports.even = '짝수';
// module.export 사용 x
exports.area = width => Math.pow(width, 2);
exports.perimeter = width => width * 4;
🔎 exports vs module.exports
exports객체가 module.exports객체를 참조하기 때문에 결국 같다. (최종 리턴값은 module.exports)
exports는 프로퍼티 방식
module.exports는 변수에 아예 새로운 객체 할당
require()
노드에서 제공하는 함수로 모듈을 불러오는 방식
const 변수 = require('파일 경로');
//구조 분해 할당
const { odd, even } = require('파일 경로');
파일 경로
../ : 부모
./ : 현재 폴더