IT/Front-End
[FE] type='module'과 defer
KimCookieYa
2023. 8. 16. 00:20
script 태그
<script> 태그에 사용되는 type='module'
과 defer
는 Javascript를 로드하고 실행하는 방식을 지정하는 속성이다. 각 속성의 기능과 특징은 다음과 같다.
type='module'
- 이 속성을 사용하면 ECMAScript 모듈로서 로드하게 된다.
import
와export
문을 사용할 수 있다.- 모듈 스크립트는 항상
defer
된 것처럼 동작하므로, 문서 파싱이 완료된 후에만 실행된다. - 모듈 스크립트는 기본적으로 CORS 체크를 수행하므로, 다른 출처에서 가져온 모듈을 로드하려면 해당 서버가 적절한 CORS 헤더를 제공해야 한다.
- 인라인과 외부 모듈 스크립트 모두에
type='module'
을 사용할 수 있다. - 모듈은 항상
strict mode
에서 실행된다.
defer
defer
속성이 있는 스크립트는 HTML 문서의 파싱이 완전히 완료된 후에만 실행된다.defer
속성은 외부 스크립트에만 적용될 수 있다.(src
속성이 있는 스크립트)- 문서의 파싱이 완료되고, DOMContentLoaded 이벤트 직전에 스크립트가 실행된다.
- 여러 개의
defer
스크립트가 있다면, 스크립트는 페이지 내에서의 순서대로 실행된다.
흔히, defer
속성은 페이지 로딩 속성을 향상시키기 위해 외부 스크립트를 로드할 때 사용된다. 스크립트가 문서 파싱 중에 실행되는 것을 방지하고, 파싱이 완료된 후에 실행될 수 있도록 한다.