여태까지 <body>
태그 맨 끝에 <script src="main.js"></script>
를 사용해왔는데
드림코딩앨리강의를 듣게되며 script사용방법및이유와 장단점에 대해 정리해보려한다 : >👍🏻
<script>
사용방법<script src="main.js"></script>
를 <head>
안에 쓰면 안되는 이유
HTML을 한줄한줄씩 차례대로 실행되다가 js연결해달라는 코드를 보면 HTML읽는것을 멈추고 js를 다운받고 실행한 후에 HTML을 다시 실행하는과정을 갖는다.
이러면 화면에 로딩되는 시간이 가장 길어 제일 최악의 연동방법이된다.
<script src="main.js"></script>
를 <body>
태그 맨 끝에 사용하면 안좋은점
body안에있는 HTML요소들이 실행되고 페이지가 완전히 준비된 후에 JS를 다운받고 실행하는 과정
<script src="main.js"></script>
를 <head>
안에 async속성
과 사용한다면?
HTML요소들을 읽는것과 병렬로 JS를 다운받고 JS가 실행되는동안에는 HTML을 읽는것을 멈추고 로딩시간이 있고 난 후에 JS실행이 끝나면 남은 HTML요소를 읽는과정이다.
(async는 불리언값의 속성타입이기에 그냥 설정하는것만으로도 true가 기본값이된다.)
다수의 JS를 사용했을때 발생하는 문제점이 가장 확연하게 볼 수 있다.
저렇게 blocked 로딩시간이 많아지면 정말 짜증이 나서 페이지를 안들어가는건 당연지사🙅🏻♀️
<script src="main.js"></script>
를 <head>
안에 defer속성
과 사용한다면?
3번과같이 HTML요소들을 읽는것과 병렬로 JS를 다운받고 실행하지만, defer속성을 사용했을떄는 HTML요소들을 다 실행하고 페이지가 준비되고나서 JS파일이 실행이된다!!
이렇게되면 3번의 단점들을 다 보완해주고 로딩시간도 가장 단축되어 제일 효율적인 방법이 되는것이다.
다수의 JS를 사용했을때 blocked이 없어 마음이 편-안 해진다 ㅎㅎ
이로써 <script src="main.js"></script>
를 사용할때는 <head>
안에 defer속성
을 사용하여 해야 되는 이유를 알아보았다.
또한, JS는 매우 유연한 언어이기에 use strict;를 작성해줘야 엄격한모드로 오류가나도록 해준다.
강의를 듣고, async와 defer를 차이와 사용하는 방법은 알았지만, 그래도 이 속성들이 무엇을 의미하는지 명확하지않아 구글신으로 찾아보고 공부를했다.
<script>
태그의 async 속성<script>
요소가 외부 스크립트를 참조하는 경우에만 사용<script>
태그의 defer속성<script>
요소가 외부 스크립트를 참조하는 경우에만 사용