ESM과 CommonJS
모듈 문법의 차이는 정적 분석, live binding, default interop, 순환 참조 처리에서 실제 빌드와 런타임 결과를 바꾼다.
| 비교 축 | ESM | CommonJS | 확인할 것 |
|---|---|---|---|
| 문법 | import/export | require/module.exports | 프로젝트 type 설정 |
| 분석 시점 | 정적 분석 가능 | 런타임 require 가능 | 번들러 tree shaking 여부 |
| Binding | live binding | 값 복사처럼 보일 수 있음 | 변경 전파 기대 여부 |
| Loading | 비동기 로딩과 top-level await 가능 | 동기 require | 런타임 환경 Node/Browser |
| Interop | default/named 변환 이슈 | module.exports와 default 매핑 | 라이브러리 export 형태 확인 |
모듈 시스템은 문법 차이보다 빌드 도구가 의존성을 언제 어떻게 분석할 수 있는지가 중요하다.