ESM 그리고 CommonJS
7 min read

ESM 그리고 CommonJS

ESM과 CommonJS에 대해서 알아보자


JavaScript는 오랜 시간 동안 웹 개발의 중심 언어로 자리 잡아 왔으며, 모듈 시스템의 발전도 이에 맞춰 진화해왔습니다. CommonJS와 **ESM(ECMAScript Modules)**은 JavaScript 모듈 시스템의 두 가지 주요 축입니다. 이번 글에서는 두 시스템의 차이점, 장단점, 그리고 선택 기준에 대해 알아보겠습니다.


1. CommonJS란?

CommonJS는 Node.js에서 기본적으로 사용되는 모듈 시스템입니다. JavaScript가 브라우저 외의 환경에서도 사용되기 시작하면서, 모듈화를 위한 표준이 필요했는데, CommonJS는 이에 대한 초기 솔루션으로 자리 잡았습니다.

CommonJS의 주요 특징


2. ESM(ECMAScript Modules)이란?

ESM은 ES6(ECMAScript 2015)에서 도입된 공식 모듈 시스템으로, JavaScript 언어 자체에 통합되었습니다. 브라우저와 Node.js 모두에서 점차 표준으로 자리 잡아가고 있습니다.

ESM의 주요 특징


3. CommonJS와 ESM의 주요 차이점

특징CommonJSESM
사용 문법require, module.exportsimport, export
로드 방식동기적 로딩비동기적 로딩
환경 지원Node.js 전용(브라우저 지원 어려움)브라우저와 Node.js 모두 지원
트리 셰이킹지원하지 않음지원
엄격 모드선택적항상 활성화
확장자.js.mjs (Node.js에서 명시적)

4. 장단점 비교

CommonJS의 장점

CommonJS의 단점

ESM의 장점

ESM의 단점


5. ESM과 CommonJS, 무엇을 선택해야 할까?

CommonJS를 선택해야 할 때

ESM을 선택해야 할 때


6. 마무리

CommonJS와 ESM은 각기 다른 요구사항을 해결하기 위해 만들어졌습니다. CommonJS는 Node.js 기반의 서버 환경에서 강력한 도구로 자리 잡았고, ESM은 JavaScript의 표준화를 통해 브라우저와 서버 양쪽에서 모듈 관리를 효율적으로 지원합니다.

따라서 현재 환경과 요구사항에 따라 적합한 모듈 시스템을 선택하면 됩니다. 앞으로는 ESM이 점점 더 널리 사용될 가능성이 높으므로, 새로운 프로젝트에서는 ESM을 고려하는 것이 좋은 선택일 것입니다.


참고 자료