✔ 사전스터디 JavaScript 내용은 유튜버 드림코딩 엘리님의 강의를 참고하였다.
- 자바스크립트란 객체 기반의 프로그래밍 언어이다.
- 웹 브라우저에서 유일!!하게 구동되는 프로그래밍 언어이다.
- 웹의 기본 3구성 중 정적인 HTML, CSS와 달리 동적인 언어이다.(움직이거나 깜빡이는 요소 등....)
위 그림과 같이 브라우저는 HTML과 CSS의 parsing
(해석, 분석)을 통해 코드들을 한 줄씩 읽으면서 웹의 구조를 파악하게 된다.
하지만 이러한 parsing
과정은, 중간에 <head>
태그에 삽입 된 <script>
태그의 javascript
파일을 가져온 후 실행하는 동안 멈추게 된다.
위와 같은 이유로 사용자에게 보여지기까지의 과정이 상대적으로 느리다. 또한 만일 javascript
파일이 무겁다면 그 속도는 더욱 늦어질 것이다. 때문에 이 방법은 적절하지 않다.
가장 보편적인 방식으로, <body>
태그의 가장 끝 부분에 <script>
태그를 추가한다.
장점: <head>
태그에 삽입했던 방법과 달리 parsing
도중 멈추지 않기 때문에 상대적으로 빨리 볼 수 있다.
단점: 만일 해당 웹사이트가 javascript
에 굉장히 의존적이며 javascript
파일이 매우 무겁다면, 이 또한 사용자에게 보이기까지 시간이 오래 걸린다.(fetching
, executing
시간 증가)
<head>
태그 안, boolean
타입의 async
속성값을 부여한다.
특징: HTML이 파싱되는 동안, javascript
는 병렬로 fetching
이 이루어지며 파일이 실행되는 동안 parsing
이 멈춘다.
장점: 병렬적으로 fetching
이 되기 때문에 parsing
전체의 시간을 줄일 수 있다.
단점: html요소에 의존하는 javascript
파일의 경우, html 및 css 요소가 parsing
되기 전에 실행될 가능성이 존재하므로 위험하다. 또한 정의된 js순서에 상관없이 fetching
(다운로드)되는 순서로 파일이 실행되기 때문에 순서에 의존적인 javascript
파일의 경우 문제가 발생할 수 있다.
<head>
태그 안, boolean
타입의 defer
속성값을 부여한다.
특징: HTML이 파싱되는 동안, javascript
는 병렬로 fetching
이 이루어지며 parsing
종료 후, 파일이 실행된다.
장점: 웹 페이지의 실행 시간이 가장 짧다. (parsing
이 중단되는 구간이 없음) 또한 정의한 javascript
순서대로 실행이 되기 때문에 async보다 상대적으로 안전한다.