<script>
,<script async>
와<script defer>
의 차이점에 관해 설명해주세요.
<script>
<script src="main.js"></script>
DOM 파싱(...ing) ➡ script태그를 만남 ➡ parsing 멈추고 fetching & executing js
순차적으로
script 실행되기 때문에 파싱 중단없이 html&css 화면이 먼저 빠르게 로딩된다.헤더에 <script async src="main.js"></script>
선언
(*async=boolean 타입→ 기본 선언시 true)
병렬적으로
parsing DOM & fetching scriptParsing ➡ Parsing DOM & Fetching JS ➡ Executing JS(&Parsing paused) ➡ Parsing restart
순서 관계없이
빨리 다운로드되는 순으로 실행된다.(순서 의존적이라면 문제)헤더에 <script defer src="main.js"></script>
선언
병렬적으로
parsing & script fetching parsing 모두 끝나면
(when page ready) execute jsParsing ➡ Parsing & JS Fetching ➡ Parsing Done ➡ JS Executing
<script>
, <script async>
와 <script defer>
를 구분하여 사용하는 것은 프론트 단에서 속도 향상할 수 있는 방법 중 하나가 될 수 있다. 각각 장단점 참조하여 적합한 태그를 선택한다. DOM조작을 하거나 다른 파일에 종속적인 js 파일로드시 <script defer>
태그 사용이 적절하다.