ES Modules

모듈 경계 설계

export/import 문법은 코드를 나누는 수단이고, 모듈 구조는 무엇을 공개할지 먼저 정하는 데서 시작합니다.

Export Shape

내보내는 방식

Named여러 유틸, 상수, 타입처럼 이름 자체가 API일 때 적합하다.
Default파일의 주 역할이 하나의 컴포넌트나 클래스일 때 사용한다.
Namespace관련 기능을 한 객체처럼 읽고 싶을 때 import * as 형태로 묶는다.
런타임 점검

가져오는 환경

Browser

type="module"과 CORS 조건을 확인한다.

Node

type: module 또는 .mjs 여부를 확인한다.

Bundler

경로 별칭, 트리 셰이킹, 코드 분할을 함께 본다.

Legacy

CommonJS와 섞일 때 default interop을 점검한다.

모듈을 작게 나누되 공개 API가 불안정하면 의존성이 더 복잡해집니다. 파일 분리보다 import 경로의 의미가 먼저 선명해야 합니다.