Script, async, defer

Suyeon·2020년 9월 27일
0

Interview prep

목록 보기
4/22

이 세가지의 태그를 통해 브라우저에게 언제 자바스크립트 코드를 실행할지 알려줄 수 있다.

<script src="myscript.js"></script>
<script async src="myscript.js"></script>
<script defer src="myscript.js"></script>

script

  • script태그를 만나자마자 html parsing이 중단되고 즉시 script태그를 실행함 (실행이 끝난 후에 다시 html parsing이 시작).
  • script태그는 body closing태그 전에 위치 시키는게 일반적임 (header에 위치시키면 script parsing이 완료될 때까지 유저는 빈화면을 봐야하기 때문)

Issues

  • script는 아래에 있는 DOM contents를 볼 수 없음(handler를 추가 하지 못함).
  • 유저는 script 로딩이 끝날 때까지 page content를 볼 수 없음 (blocks the page)

async

  • script를 html parsing과 병렬적으로 가져옴
  • script가 실행가능할 때 즉시 실행하고(html parsing 중단) html parsing을 다시함
  • 순서를 기억하지 않음
  • 각각의 스크립트가 서로 의존적이지 않을 때 유용함 (Google analytics)

Defer

  • script를 html parsing과 병렬적으로 가져옴
  • html parsing이 끝나고 script를 실행함
  • 순서를 기억함
  • 각각의 스크립트가 서로 의존적일 때 유용함 (jquery처럼 두번째 스크립트가 첫번째 스크립트에 의존할 경우)
  • script를 header 혹은 body 어느곳에 위치시켜도 상관 없음(html parsing이 끝나고 script를 실행하기 때문)
profile
Hello World.

0개의 댓글