1. head ๋ด๋ถ์ ์์ฑ
<head>
<script src ="main.js"></script>
</head>
์์์๋ถํฐ HTML์ ์ฝ๋๋ค (parsing html)
-> blocked ๋ ์ํ์์ js๋ฅผ ์ฝ๋๋ค. (fetching/executing js)
-> ๋ค์ HTML์ ์ฝ๋๋ค.
์ด ๋ฐฉ๋ฒ์ js๊ฐ ์ฉ๋์ด ํฌ๋ค๋ฉด ์น์ฌ์ดํธ๋ฅผ ๋ถ๋ฌ์ค๋๋ฐ๊น์ง ๋ง์ ์๊ฐ์ด ์์๋๋ค.
2. body ๋ด๋ถ์ ์์ฑ
<head>
</head>
<body>
<script src ="main.js"></script>
</body>
parsing html
-> ํ์ด์ง๊ฐ ์๋ฃ๋ ์ํ์์ js๋ฅผ ์ฝ๋๋ค. (fetching/executing js)
์ฌ์ฉ์๊ฐ js๊ฐ ์ ์ฉ๋์ง ์์ ์น์ฌ์ดํธ (๋ฐ์ดํฐ๋ DOM ์์๊ฐ ๊พธ๋ฉฐ์ง์ง ์์ ์ํ) ๋ฅผ js๊ฐ ๋ฐ์์ง๊ธฐ ์ ๊น์ง ๋ณด๊ฒ ๋๋ค.
3. head ๋ด๋ถ์ ์์ฑ (asyn)
<head>
<script asyn src ="main.js"></script>
</head>
<body>
</body>
parsingํ๋ค๊ฐ js๋งํฌ๋ฅผ ๋ง๋๋ฉด parsing๊ณผ ๋ณ๋ ฌ๋ก js๋ฅผ ์ฝ๋ค๊ฐ js๊ฐ ๋ฐ์์ง๋ฉด(fetching) ์คํ(executing)
-> ๋ง์ parsing html
๋ค์ด๋ก๋๋ฐ๋ ์๊ฐ์ ์ ์ฝํ ์ ์์ผ๋ js๊ฐ fetching๋๋ ์์๋๋ก executing๋๊ธฐ ๋๋ฌธ์ ์๋ํ ์์์ ์๊ด์์ด js๊ฐ ์คํ๋์ด ์์์ ์์กด์ ์ธ js์ ๊ฒฝ์ฐ ์์์น ๋ชปํ ์ค๋ฅ๋ฅผ ๋ผ ์ ์๋ค.
4. head ๋ด๋ถ์ ์์ฑ (defer) (์ถ์ฒ)
<head>
<script defer src ="main.js"></script>
</head>
<body>
</body>
parsingํ๋ค๊ฐ js๋งํฌ๋ฅผ ๋ง๋๋ฉด parsing๊ณผ ๋ณ๋ ฌ๋ก js๋ฅผ fetching
-> HTML parsing์ด ๋๋๋ฉด js๋ฅผ ์์๋๋ก executing
๋ค์ด๋ก๋ ์๊ฐ์ ์ ์ฝํ ์ ์๊ณ , js ๋ํ ์์๋๋ก ์คํ๋์ด ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ค.
์ถ์ฒ : ๋๋ฆผ์ฝ๋ฉ https://www.youtube.com/@dream-coding / MDN https://developer.mozilla.org/ko