ESM이란?

강연주·2025년 4월 14일

📚 TIL

목록 보기
153/186

node.js ESM introduction

https://nodejs.org/api/esm.html#introduction

ECMAScript modules are the official standard format to package JavaScript code for reuse. Modules are defined using a variety of import and export statements.

ECMAScript 모듈은, 자바스크립트 코드를 묶어내 재사용할 수 있게 하는 공식 포맷이다.
모듈은 import, export 구문으로 정의된다.

아래 ES 모듈들은 함수를 export한다.

// 🖥️ addTwo.mjs
function addTwo(num) {
  return num + 2;
}

export { addTwo };

아래 ES 모듈들은 addTwo.mjs에서 함수를 import한다.

// 🖥️ app.mjs
import { addTwo } from './addTwo.mjs';

// Prints: 6
console.log(addTwo(4));

Node.js fully supports ECMAScript modules as they are currently specified and provides interoperability between them and its original module format, CommonJS.

Node.js는 ESM을 전면 지원하며 둘 간의 상호운용성을 제공한다.


MDN ESM guide

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules


ESM이란?

자바스크립트의 공식 모듈 시스템으로, 기존에는 CommonJS나 AMD 같은 비표준 모듈 시스템을 사용했으나, ES6(ES2015)부터 JS에 공식 모듈 시스템을 도입했다.

특징

1. 표준화된 구문
: import, export 키워드 사용.

🖥️ javascript

// 모듈 내보내기
export function hello() { ... }

// 모듈 가져오기
import { hello } from './module.js';

2. 정적 분석 가능
: 파일이 실행되기 전에 모듈 구조를 분석할 수 있어, 트리 쉐이킹(사용하지 않는 코드 제거) 가능.

3. 비동기 로딩
: 필요할 때만 모듈을 로드할 수 있다.

🖥️ javascript

// 동적 임포트
const module = await import('./module.js');

4. 브라우저 네이티브 지원
: 최신 브라우저에서는 <script type="module"> 태그를 통해 직접 ESM을 사용할 수 있다.

5. Node.js에서도 지원
: package.json에 "type": "module"을 명시하면 ESM 문법 사용 가능.

profile
아무튼, 개발자

0개의 댓글