🔑 Point!
🎉 async
🎉 defer
JS file을 HTML에 연결하는 방법은 몇 가지가 있다.
그 중에 어떻게 연결하는 방법이 효율적인지 이유를 알고 사용해야 한다.
브라우저가 HTML을 읽고 보여주는 과정은 크게
parsing HTML, fetching js, executing js, page is ready 로 구성되어 있으며
head의 위에서 아래로 순차적으로 진행한다.
1. head + script
2. body + script
3. head + script asyns
asyns (Asynchronous :동시에 일어나지 않는, 비동기)
parsing HTML, fetching js는 함께 진행될 수 있지만, fetching js가 된 후에 js실행까지 완료하기 까지 HTML parsing이 완료 되지 않는다. executing js 완료 후에서야 parsing HTML가 마무리 된다.
즉 parsing이 안된 HTML을 조작해야하는 상황이 올 수 도 있다.
사용자가 페이지를 보는데 여전히 시간이 많이 걸림
js파일이 여러개일 경우, 정의된 스크립트 순서에 상관없이 다운로드 되며 순서에 의존적인 js라면 문제가 있다.
4. head + script defer
defer (연기하다, 미루다)
script에 defer을 넣어서 executing js를 제일 마지막으로 미룬다. 그러면 parsing HTML, fetching js는 완료된 상태에서 사용자에게 페이지를 보여줌
이는 비교적 보여지는 시간이 빠르면서 도 이미 다운받은 js파일을 실행만 하면 되기에 더 효율적이다.
또한 여러개의 js파일을 가져올 때에도 다운은 미리 받아둔 상태에서 page ready가 끝난 후 순차적으로 실행하기에 순서에 의존적인 JS파일이라도 문제가 없다.
참고 자료
👉Console MDN