자바스크립트 개발을 하다보면 require
나 import
키워드를 통해 외부 라이브러리를 불러오는 코드를 자주 보게 된다.
require
는 NodeJS에서 사용되고 있는 CommonJS
키워드이고, import
는 ES6(ES2015)
에서 새롭게 도입된 키워드다.
const moment = require("moment");
import moment from "moment";
예를 들어, 위 2줄의 코드는 기본적으로 동일한 작업을 수행한다.
CommonJS 방식은 require
키워드를 사용하여 변수를 할당하듯이 모듈을 불러오는 반면에, ES 방식은 import
키워드를 사용하여 좀 더 명시적으로 모듈을 불러오고 있다.
CommonJS
방식은 nodejs 에서도 기본값으로 채택하고 있고 자료도 CommonJS
방식으로 된 것이 더 많아서 ES
방식을 정리해본다.
ES
방식은 React 에서 흔히 사용하는 import, export 를 그대로 사용하면 되서 작업할 때 혼동이 적고 알아보기도 쉽다.
Node.js 에서 ES 모듈을 사용하려면 확장자를 mjs
로 바꿔서 사용하거나, package.json 에서 type
을 바꾸는 것이다.
부분적으로 ES 모듈을 적용할 경우엔 mjs
로 확장자를 바꿔 사용하는 것이 빠르고 좋다.
애초에 프로젝트 자체를 ES 모듈로만 적용하고 싶다면 package.json 에서 type
을 module
로 바꾸면 된다.
//test.mjs
export function Increase(a, b){
return a + b
}
//check.mjs
import { Increase } from './test.mjs';
console.log(Increase(1,2));
여기서 꼭 mjs
확장자까지 다 붙여줘야 한다.
//package.json
{
type: "module",
}
이렇게만 바꿔주면 확장자를 mjs
로 바꿀 필요없이, 사용할 수 있다.