๋ ๋๋ง ์์ง์ HTML ํ ์ค์ฉ ์์ฐจ์ ์ผ๋ก ํ์ฑํ๋ฉฐ DOM์ ์์ฑํด ๋๊ฐ๋ค๊ฐ JavaScript๋ฅผ ๋ง๋๋ฉด DOM ์์ฑ์ ์์ ์ค๋จํฉ๋๋ค.
DOM ์์ฑ์ ์์ ์ค๋จํ๊ณ , ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ํ์ฑํ๊ธฐ ์ํด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ ์ด๊ถ์ ๋๊ธฐ๊ฒ ๋๋๋ฐ, ํ์ฑ์ด ๋๋๋ฉด ๋ค์ ๋ ๋๋ง ์์ง์ ์ ์ด๊ถ์ ๋๊ฒจ ์ค๋จ๋ ๋ถ๋ถ๋ถํฐ HTML ํ์ฑ์ ์ฌ๊ฐํ๋ฉฐ DOM ํธ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค.
DOM์ ์์ฑํด ๋๊ฐ๋ค๊ฐ ์คํฌ๋ฆฝํธ ํ๊ทธ๋ฅผ ๋ง๋ ๋ ํ์ฑ์ด ์ค๋จ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ ์ค ๋น๋๊ธฐ์ ์ผ๋ก ์คํฌ๋ฆฝํธ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช
ํ๋ ค ํฉ๋๋ค.
async๋ defer ์์ฑ์ ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ๋ก๋ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์คํฌ๋ฆฝํธ ๋ก๋๊ฐ ๋ณ๋ ฌ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ฏ๋ก ํ์ด์ง ํ์ฑ์ด ์ค๋จ๋์ง ์์ต๋๋ค.
๐ HTML ์ฝ๋
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Async vs Defer</title> </head> <body> <h1>Async vs Defer ์์ >/h1> <script src="script.js" async>/script> <script src="script.js" defer>/script> </body> </html>
๐ script.js
console.log("์ด ๋ถ๋ถ์ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋์ด์ผ ํ๋ ๋ด์ฉ์ ๋๋ค.");
์ฌ๊ธฐ์ async์ defer ์์ฑ์ ๊ฐ์ง
๐ async ์์ฑ
๋ธ๋ผ์ฐ์ ๋ async ์์ฑ์ ๊ฐ์ง ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋๋ฉด HTML ํ์ฑ๊ณผ ํจ๊ป ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ค์ด๋ก๋๋ฅผ ๋์์ ์์ํฉ๋๋ค.
์คํฌ๋ฆฝํธ ํ์ผ์ด ๋ค์ด๋ก๋๋๊ณ ์คํ๋ ์ค๋น๊ฐ ๋๋ฉด, HTML ํ์ฑ์ ๋ฉ์ถ๊ณ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋ฉ๋๋ค.
๋ฐ๋ผ์ console.log๊ฐ ์คํ๋ ๋๊น์ง HTML ํ์ฑ์ ๋ฉ์ถ๊ฒ ๋ฉ๋๋ค.
๐ defer ์์ฑ
๋ธ๋ผ์ฐ์ ๋ defer ์์ฑ์ ๊ฐ์ง ์คํฌ๋ฆฝํธ๋ฅผ ๋ง๋๋ฉด HTML ํ์ฑ์ ๊ณ์ํ๋ฉด์ ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ค์ด๋ก๋๋ฅผ ์์ํฉ๋๋ค.
์คํฌ๋ฆฝํธ ํ์ผ์ DOM ์์ฑ์ด ์๋ฃ๋ ์งํ์ ์คํ๋ฉ๋๋ค. ์ฆ, DOMContentLoaded ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ํ์ ์คํ๋ฉ๋๋ค.
๋ฐ๋ผ์ console.log๊ฐ ์คํ๋ ๋๊น์ง HTML ํ์ฑ์ ๋ฉ์ถ์ง ์์ต๋๋ค.
์ด๋ฌํ ๋ฐฉ๋ฒ ์ค์์ ์ ํฉํ ๋ฐฉ๋ฒ์ ์ ํํ์ฌ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋น๋๊ธฐ ๋ก๋๋ ์คํฌ๋ฆฝํธ ์์น ์ด๋์ด ๊ฐ์ฅ ํจ๊ณผ์ ์ธ ํด๊ฒฐ์ฑ
์ผ ์ ์์ต๋๋ค.