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('파일 경로');

 

파일 경로
../ : 부모
./ : 현재 폴더