editor : visual studio code
plugin : Live Server
μ½μμ Hello World!
λ₯Ό μΆλ ₯νλ μ€ν¬λ¦½νΈλ₯Ό μμ±νλ€.
console.log('Hello World!');
νμ΄μ§λ₯Ό μμ±νμ¬ main.js λ₯Ό μ€νμν€λλ‘ νλ€.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="main.js"></script>
</head>
<body>
</body>
μμ±λ μ½λλ₯Ό μ€νμν€κΈ° μν΄μ Live Server νλ¬κ·ΈμΈμ μ΄μ©νλ€. μλν°μμ λ§μ°μ€ μ€λ₯Έμͺ½λ§ ν΄λ¦ν΄λ λ°λ‘ μ¬μ©ν μ μλ€.
μ°κ²°λ λΈλΌμ°μ μμ κ°λ°μ ν΄ (F12) μ μ€ννμ¬ console νμ νμΈνλ©΄ Hello World κ° μ°ν κ²μ νμΈν μ μλ€. ( node.js μμλ js νμΌμ μ€νκ²°κ³Όλ₯Ό λ°λ‘ νμΈν μ μλλ° μ΄λ node.js μ web api λͺ¨λ console api κ° μ¬μ©λκ³ μκΈ° λλ¬Έμ΄λ€. )
Web api λ Javascript μ ν¬ν¨λ κ²μ΄ μλλΌ λΈλΌμ°μ μμ μ 곡νλ ν¨μμ΄λ€. μ΄ ν¨μλ€μ νμ€ νμ΄μ§μΈ MDN μμ λͺ¨λ νμΈ ν μ μλ€.
λΈλΌμ°μ μ κ°λ° Tool(κ°λ°μλꡬ) μ νμ©νλ©΄ κ°λ°μ λ§μ λμμ΄ λλ€.
async & defer
λ HTML μμ Javascript νμΌμ μ£Όμ
ν λ μ΄λ€λ°©μμΌλ‘ μ£Όμ
νλκ°? μ λν μ€κ°λ€μ΄λ€.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="main.js"></script>
</head>
<body>
</body>
μμ λ°©μμ μ¬μ©νλ©΄ μ¬μ©μκ° HTML μ λΆλ¬μ¬ λ HEAD λΆλΆμμ js νμΌμ λ€μ΄λ‘λ λ°κ² λκ³ , HTML νμ±μ λ©μΆκ² λλ€.
κ²°κ³Όμ μΌλ‘ HTML μμλ€μ΄ λλ¦¬κ² νμ±λλ©΄μ μ¬μ©μλ νμ΄μ§κ° λλ¦¬κ² λ¨λ κ²½νμ νκ² λλ€.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div></div>
<script src="main.js"></script>
</body>
μμ λ°©μμ λΈλΌμ°μ κ° HTMl μ λͺ¨λ νμ±νκ³ , js νμΌμ λ€μ΄λ‘λ νκ³ μ€ννλ€.
μ¬μ©μκ° νμ΄μ§ 컨ν μΈ λ₯Ό λΉ λ₯΄κ² μ νλ κ²μ μ₯μ μ΄λ, μΉμ¬μ΄νΈκ° js μ μμ‘΄μ μ΄λΌλ©΄ (js λ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό λ°κ±°λ, Dom μμ μ‘°μ) HTML μ΄ μ μμ μΌλ‘ 보μ΄λλΌλ λμ νμ§ λͺ»ν μ μλ€.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script async src="main.js"></script>
</head>
<body>
<div></div>
</body>
μμ λ°©μμ async
μμ±μ μ¬μ©νλ κ², λΈλΌμ°μ κ° HTML μ νμ±νλ©΄μ js λ₯Ό λ³λ ¬λ‘ λ€μ΄λ‘λ λ°λλ€.
js λ€μ΄λ‘λκ° μλ£λλ©΄, HTML νμ±μ λ©μΆκ³ js λ₯Ό μ€ννλ€.
js κ° htmlμ΄ νμ±λκΈ° μ μ μ€νλλ©΄ Dom μμ μ‘°μνλ μ½λκ° λ¨Ήνμ§ μμ μ μλ€.
js λ₯Ό μ€νν λ HTML νμ±μ΄ λ©μΆκΈ° λλ¬Έμ μ¬μ©μκ° μ»¨ν μΈ λ₯Ό 보λ μκ°μ΄ μ¬μ ν λλ €μ§ κ°λ₯μ±μ΄ μλ€.
λ€μμ μ€ν¬λ¦½νΈλ₯Ό λ€μ΄λ‘λ λ°κ² λλ©΄, λ¨Όμ λ°μ μμλΆν° μ€νλλ€. μ μλ μμμ μμ‘΄μ μΈ js λΌλ©΄ λ¬Έμ κ° μκΈΈ μ μλ€.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script defer src="main.js"></script>
</head>
<body>
<div></div>
</body>
μμ λ°©μμ defer
μμ±μ μ¬μ©νλ κ², λΈλΌμ°μ κ° HTML μ νμ±νλ©΄μ js λ₯Ό λ³λ ¬λ‘ λ€μ΄λ‘λ λ°λλ€.
async
λ°©μκ³Όλ λ€λ₯΄κ² js λ₯Ό λ³λ ¬λ‘ λ€μ΄λ‘λ λ°κ³ , HTML νμ±μ΄ λλλ©΄ js κ° μ€ννλλ‘ νλ€.
defer
λ λ€μμ js νμΌμ λ°μλ μ μλ μμλλ‘ μ€νλλ―λ‘ ν¨μ¨μ μ΄κ³ μμ νλ€.
type script μμλ νμκ° μμ§λ§ vanilla js λ₯Ό μ΄μ©ν λλ μ¬μ©νλ κ²μ΄ μ’λ€.
js μ΄μ°½κΈ°μ λ무 μ μ°νκ² λ§λ€μ΄μ Έμ μνμ±μ΄ λ°λλ€. (μ μΈλμ§ μμ λ³μμ κ° ν λΉ / νλ‘ν νμ λ³κ²½ )
Ecma 5 μμ μΆκ°λ μ΅μ μΌλ‘ js μ μ μ°μ±μ λ§μμ€λ€.