Node.js에서 Module은 필요한 함수들의 집합 을 의미한다. Module은 크게 2가지로 분류를 할 수 있는데, 다음과 같다.
사용하고자 하는 Modle을 불러오는 방법은 아래와 같다.
첫번째는 기존 CommonJS를 사용하여 불러오는 방법이다.
const moment = require('moment');
두번째는 파일 단위로 ES 모듈을 적용하여 불러오는 방법이다.
import moment from 'moment';
ES 모듈을 사용하여 불러오게되면 파일 확장자를 js대신 mjs를 사용하는 것이다. 프로젝트 부분적으로 ES 모듈을 사용할 때 가장 쉽고 빠르게 적용할 수 있는 방법이다.
core module(built-in module) 은 Node.js에서 기본적이로 제공하는 모듈을 의미한다. Node.js에서 기본적으로 제공하는 모듈은 http, os등 다양하다.
Node.js에서 제공하는 Core module 외에 자신이 직접 모듈을 만들어서 애플리케이션에 포함시킬 수 있다. 모듈을 직접 생성할 땐 export
키워드를 사용한다.
export function myDate() {
return Date();
}
위 코드를 파일에 저장하면 require() 함수를 사용해서 local module을 불러와 사용할 수 있다.
cosnt { myDate } = require('myModule');
require / exports는 Node.js에서 기존에 사용됐던 CommonJs 모듈 방식으로, module.exports
객체에 모듈 전체를 치황해서 내보내고, require
을 통해서 해당 모듈을 불러오는 방식이다.
따라서 CommonJs 모듈 방식으로는 전체 모듈을 다 불러오게 되며, 불필요한 모듈이 로드되기도 하고 모듈 내에 어떤 부분을 사용했는지 확인할 수 없다.
그래서 ES6(ECMA2015) 부터는 import / export 방식으로 모듈을 불러오고 내보낸다. ES 모듈 import
는 require
와는 다르게
import { name } from 'module_name';
위와 같이 모듈내에 정의된 특정한 부분만을 불러올 수 있다.