모듈
-
모듈은 하나의 파일
-
모듈 내 함수나 객체는 export 키워드로 내보낼 수 있고 내보내진 코드는 import 키워드로 사용
-
브라우저에서 import/export 지시자 사용하려면
<script type="module">
같은 속성 필요 -
모듈은 HTTP(s) 를 통해서만 동작함 (로컬은 안 됨)
-
모듈은 지연 실행, 인라인 모듈 스크립트도 비동기 처리(async 속성 붙었을 시 내부 코드 작업 끝나면 바로 실행), 외부 오리진에서 스크립트에서 불러올 시 CORS 헤더 필요, 중복된 외부 스크립트 는 한 번만 실행되며 그 다음은 무시됨
-
모듈은 자신만의 스코프 가짐
-
import.meta 객체는 현재 모듈에 대한 정보 제겅해주며 호스트 환경에 따라 제공하는 정보 다름
-
모듈 최상위 레벨의 this 는 undefiend(전역 객체가 아님)
-
항상 엄격 모드(use strict)로 실행됨
-
‘경로가 없는’ 모듈은 금지됨
-
nomodule 로 모듈 지원하지 않는 환경 브라우저 대처 가능
-
모듈 내 코드는 단 한 번만 실행되며 모듈 내보낼 시 이 모듈을 가져오기 하는 모듈 모두가 내보내진 모듈 공유(변경점 다른 모듈에서도 공유)
-
브라우저는 자동으로 스크립트를 불러오고 평가
-
성능 개선 등의 이점 떄문에 웹팩과 같은 번들러(빌드 툴) 사용 많이 함