Module system

ESM과 CommonJS

모듈 문법의 차이는 정적 분석, live binding, default interop, 순환 참조 처리에서 실제 빌드와 런타임 결과를 바꾼다.

비교 축ESMCommonJS확인할 것
문법import/exportrequire/module.exports프로젝트 type 설정
분석 시점정적 분석 가능런타임 require 가능번들러 tree shaking 여부
Bindinglive binding값 복사처럼 보일 수 있음변경 전파 기대 여부
Loading비동기 로딩과 top-level await 가능동기 require런타임 환경 Node/Browser
Interopdefault/named 변환 이슈module.exports와 default 매핑라이브러리 export 형태 확인

모듈 시스템은 문법 차이보다 빌드 도구가 의존성을 언제 어떻게 분석할 수 있는지가 중요하다.