javascript async vs defer μ΅μ
Table of contents
μν© λ³, μλ°μ€ν¬λ¦½νΈ fetching κ³Ό executing μμ
κΈ°λ³Έμ μΌλ‘ html ꡬ문μ μμμ λΆν° νμ€ νμ€μ©, parsing νλ©΄μ μ½μ΄λκ°λ€.
head νκ·Έ μμ script νκ·Έκ° μλ κ²½μ°
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
<script src = "main.js"></script>
</head>
<body></body>
</html>
μμ κ°μ΄ ꡬμ±λμ΄ μλ€κ³ κ°μ νλ©΄, μμμ λΆν° λ΄λ €μ€λ©΄μ HTML ꡬ문μ parsing νλ€κ° <script>
νκ·Έλ₯Ό λ°κ²¬νλ©΄
ν΄λΉ μ€ν¬λ¦½νΈ νκ·Έμ src νμΌμ μλ²μμ λ€μ΄λ‘λ(fetching) νκ³ μ€ν(executing) νκ² λλ€.
κ·Έλ¬κ³ λμ λ¨μ, HTML ꡬ문μ parsing νλ€.
κ·Έλ¦ΌμΌλ‘ 보면 μμ κ°μ κ³Όμ μ κ±°μΉλ€.
μλ°μ€ν¬λ¦½νΈ νμΌμ΄ 컀μ λ€μ΄λ‘λνκ³ μ€ννλλ° μ€λ κ±Έλ¦°λ€λ©΄, μμ ν HTML νμΌμ 보기κΉμ§ μκ°μ΄ μ€λ κ±Έλ¦°λ€λ λ¨μ μ΄ μλ€.
body νκ·Έ λ λΆλΆμ script νκ·Έκ° μμΉνλ κ²½μ°
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<script src = "main.js"></script>
</body>
</html>
μμ κ°μ΄ μ½λκ° κ΅¬μ±λμ΄ μλ€κ³ κ°μ νλ©΄, HTML νμΌμ λͺ¨λ parsing ν λ€, scipt νκ·Έλ₯Ό λ°κ²¬νμ¬ λ€μ΄λ‘λλ°κ³ μ€νν κ²μ΄λ€.
μ¬μ©μκ° κΈ°λ³Έμ μΈ HTML 컨ν μΈ λ₯Ό λΉ λ₯΄κ² λ³Ό μ μλ μ₯μ μ΄ μμ§λ§, μλ°μ€ν¬λ¦½νΈμ μμ‘΄μ μΈ μ¬μ΄νΈμ κ²½μ°λ μ μμ μΈ νμ΄μ§λ₯Ό 보기κΉμ§ μ€λ 걸릴 μ μλ€.
head νκ·Έμμ script νκ·Έμ async μ΅μ μ μ¬μ©νλ κ²½μ°
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset="UTF-8" />
<script asyn src = "main.js"></script>
<title>Document</title>
</head>
<body>
</body>
</html>
μμ κ°μ΄ μ½λκ° κ΅¬μ±λμ΄ μλ€κ³ ν λ,
scriptμ async μ΅μ μ νμΈνλ©΄, λ³λ ¬λ‘ λ€μ΄λ‘λ λ°λλ‘ μμ²νλ€.
μλ°μ€ν¬λ¦½νΈ νμΌ μ μ₯μ΄ μλ£λλ©΄, HTML μ parsing νλ κ²μ λ©μΆκ³ λ€μ΄λ°μ μλ°μ€ν¬λ¦½νΈ νμΌμ μ€νμν¨λ€.
μ€νμ΄ λλ λ€, λ¨μ HTML μ parsing νλ€.
λ€μ΄λ‘λ λ°λ μκ°μ μ μν μ μμ§λ§, HTMLμ΄ μμ μ΄ parsing μ΄ λλκΈ° μ μ μ€νλλ―λ‘ μμ ν νμ΄μ§λ₯Ό νμΈνλ μκ°μ λ¨μΆνκΈ°λ μ΄λ €μΈ μ μλ€.
head νκ·Έμμ script νκ·Έμ defer μ΅μ μ μ¬μ©νλ κ²½μ°
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset="UTF-8" />
<script defer src = "main.js"></script>
<title>Document</title>
</head>
<body>
</body>
</html>
μμ κ°μ΄ μ½λκ° κ΅¬μ±λμ΄ μλ€λ©΄,
script μ defer μ΅μ μ νμΈνλ©΄, λ³λ ¬μ μΌλ‘ λ€μ΄λ‘λ λ°λλ‘ νκ³ , μ€νμ HTML parsing μ΄ λλλ©΄ μ§ννλλ‘ νλ€.
λν, defer μ΅μ μ΄ μ μ©λ scriptκ° μ¬λ¬κ°λΌλ©΄, λ€μ΄λ μμμ κ΄κ³ μμ΄, λ°κ²¬ν μμλλ‘ μ€νμν¬ μ μμ΄ μμ ν μΉ μ¬μ΄νΈ ννμ΄ κ°λ₯ν΄μ§λ€.