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을 전면 지원하며 둘 간의 상호운용성을 제공한다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules
자바스크립트의 공식 모듈 시스템으로, 기존에는 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 문법 사용 가능.