
π λ³Έ ν¬μ€νΈλ 'λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive' λμλ₯Ό λ°νμΌλ‘ ν΅μ¬ κ°λ λ° λ΄μ©μ μμ½ν ν¬μ€νΈμ λλ€.
03μ₯ μλ°μ€ν¬λ¦½νΈ κ°λ° νκ²½κ³Ό μ€ν λ°©λ²
3.1 μλ°μ€ν¬λ¦½νΈ μ€ν νκ²½
μλ°μ€ν¬λ¦½νΈλ λΈλΌμ°μ νκ²½ λλ Node.js νκ²½μμ μ€νμ΄ κ°λ₯ν©λλ€.
κΈ°λ³Έμ μΌλ‘ λΈλΌμ°μ μμ λμνλ μ½λλ Node.js νκ²½μμλ λμΌνκ² λμνμ§λ§ λΈλΌμ°μ μ Node.jsλ μ©λκ° λ€λ₯΄λ€λ μ μ μ£Όμν΄μΌ ν©λλ€.
λΈλΌμ°μ - HTML, CSS, JSλ₯Ό μ€ννμ¬ μΉ νμ΄μ§λ₯Ό λΈλΌμ°μ νλ©΄μ λ λλ§νλ κ²μ΄ λͺ©μ
Node.js - λΈλΌμ°μ μΈλΆμμ μλ°μ€ν¬λ¦½νΈ μ€ν νκ²½μ μ 곡νλ κ²μ΄ λͺ©μ
λ°λΌμ, λΈλΌμ°μ μ Node.jsλ λͺ¨λ μλ°μ€ν¬λ¦½νΈμ μ½μ΄μΈ ECMAScriptλ₯Ό μ€νν μ μμ§λ§ κ° νκ²½μμμ μΆκ° κΈ°λ₯μ μλ‘ μ§μνμ§ μμ΅λλ€.
μλ₯Ό λ€μ΄, λΈλΌμ°μ μ DOM API(νμ±λ HTML μμλ₯Ό μ ννκ³ μ‘°μνλ κΈ°λ₯)λ Node.jsμμ μ§μλμ§ μμΌλ©° λ°λλ‘ Node.jsμμ κΈ°λ³Έ μ 곡λλ νμΌ μμ€ν μ λΈλΌμ°μ μμλ μ§μλμ§ μμ΅λλ€.
3.2 μΉ λΈλΌμ°μ
λ³Έ ν¬μ€ν μμμ λΈλΌμ°μ λ κ΅¬κΈ ν¬λ‘¬ λΈλΌμ°μ λ₯Ό μλ―Έν©λλ€. ν¬λ‘¬μ ECMAScript μ¬μμ μ€μνλ©° μμ₯ μ μ μ¨λ κ°μ₯ λλ€λ νΉμ§μ κ°μ§κ³ μμ΅λλ€.
3.2.1. κ°λ°μ λꡬ
ν¬λ‘¬ λΈλΌμ°μ κ° μ 곡νλ κ°λ°μ λꡬλ μΉ μ ν리μΌμ΄μ κ°λ°μ μμ΄ νμμ μ΄κ³ κ°λ ₯ν λꡬμ λλ€. κΈ°λ³Έ λ΄μ₯λμ΄ μμ΄ λ³λλ‘ μ€μΉν νμκ° μμΌλ©° μλ λ¨μΆν€λ‘ μ΄ μ μμ΅λλ€.
Windows - F12 or Ctrl + Shift + I
macOS - command + option + I

μμ£Ό μ¬μ©νλ κ°λ°μ λꡬμ κΈ°λ₯μ μλ νμ κ°μ΅λλ€.
ν¨λ | μ€λͺ |
μμ (Elements) |
λ‘λ©λ μΉ νμ΄μ§μ DOMκ³Ό CSSλ₯Ό νΈμ§νμ¬ λ λλ§λ λ·°λ₯Ό νμΈν μ μμ΅λλ€. νΈμ§λ λ΄μ©μ μ μ₯λμ§ μμΌλ©° μΉ νμ΄μ§κ° μλλ λλ‘ λ λλ§λμ§ μμ κ²½μ°μ μ μ©νκ² μ¬μ©μ΄ κ°λ₯ν©λλ€. |
μ½μ (Console) |
λ‘λ©λ μΉ νμ΄μ§μ μλ¬λ₯Ό νμΈνκ±°λ JS μμ€ μ½λμ μμ±ν console.log λ©μλμ μ€ν κ²°κ³Όλ₯Ό νμΈν μ μμ΅λλ€. |
μμ€ (Sources) |
λ‘λ©λ μΉ νμ΄μ§μ JS μ½λλ₯Ό λλ²κΉ ν μ μμ΅λλ€. |
λ€νΈμν¬ (Network) |
λ‘λ©λ μΉ νμ΄μ§μ κ΄λ ¨λ λ€νΈμν¬ μμ² μ 보μ μ±λ₯μ νμΈν μ μμ΅λλ€. |
μ ν리μΌμ΄μ
(Application) |
μΉ μ€ν 리μ§, μΈμ , μΏ ν€λ₯Ό νμΈνκ³ κ΄λ¦¬ν μ μμ΅λλ€. |
3.2.2. μ½μ
μμμλ κ°λ¨ν μ€λͺ ν κ²μ²λΌ μ½μμ λ‘λ©λ μΉ νμ΄μ§μ μλ¬, console.log λ©μλμ μ€ν κ²°κ³Όλ₯Ό νμΈνλ μ©λλ‘ μ¬μ©ν μ μμ΅λλ€.
μΆκ°λ‘ μ½μ λ΄μμ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό μ§μ μ λ ₯νμ¬ κ²°κ³Όλ₯Ό νμΈνλ REPL(Read Eval Print Loop: μ λ ₯ μν μΆλ ₯ λ°λ³΅) νκ²½μΌλ‘λ μ¬μ© κ°λ₯ν©λλ€.

3.2.3. λΈλΌμ°μ μμ JS μ€ν / λλ²κΉ
λΈλΌμ°μ λ HTMLμ λ‘λνλ©΄ script νκ·Έμ ν¬ν¨λ JS μ½λλ₯Ό μ€νν©λλ€. λ§μΌ JS μ½λμ console.log λ©μλκ° νΈμΆλμλ€λ©΄ μ½μμ μ€ν κ²°κ³Όκ° μΆλ ₯λ©λλ€.
μλμ κ°μ JSκ° ν¬ν¨λ HTML νμΌμ μμ±νκ³ λΈλΌμ°μ λ₯Ό μ€ννλ©΄ μλ¬κ° λ°μν©λλ€.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>λ²νΌ ν΄λ¦</title>
</head>
<body>
<button id="btn">λ²νΌ</button>
<script>
const $button = document.getElementById('button');
$button.onclick = function () {
console.log('λ²νΌ ν΄λ¦');
}
</script>
</body>
</html>
λ§μΌ κ°λ°μ λꡬμ μ½μμ μ΄μ΄λ μνκ° μλλΌλ©΄ μλ¬κ° λ°μν μ¬μ€μ μμ차리기 μ΄λ ΅κΈ° λλ¬Έμ μ½μμ μΌλκ³ κ°λ°μ νλ κ²μ΄ μμ°μ± ν₯μμ ν° λμμ μ€λλ€.

μ°μΈ‘ νλ©΄ μ€ λΆν λ μλ νλ©΄(μ½μ)μ νμΈν΄λ³Έ κ²°κ³Ό, μλ¬κ° λ°μν μ¬μ€μ μ μ μμ΅λλ€.
μ°μΈ‘ νλ©΄ μ€ λΆν λ μ νλ©΄(μμ€)λ₯Ό νμΈνλ©΄ μλ¬ μ 보μ μλ¬κ° λ°μν μμΉλ₯Ό μ μ μμ΅λλ€.
μ΄ κ²½μ°μλ $button λ³μμ κ°μ΄ nullμ΄κΈ° λλ¬Έμ λ°μν μλ¬λ‘ script νκ·Έ λ΄λΆμμ μλͺ»λ id κ°μ ν΅νμ¬ getElementById λ©μλλ₯Ό μ€ννλ€λ κ²μ μ μ μμ΅λλ€.
3.3 Node.js
μΆν λ§μ μμ±νλλ‘ νκ² μ΅λλ€.
'Web > JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ

π λ³Έ ν¬μ€νΈλ 'λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive' λμλ₯Ό λ°νμΌλ‘ ν΅μ¬ κ°λ λ° λ΄μ©μ μμ½ν ν¬μ€νΈμ λλ€.
03μ₯ μλ°μ€ν¬λ¦½νΈ κ°λ° νκ²½κ³Ό μ€ν λ°©λ²
3.1 μλ°μ€ν¬λ¦½νΈ μ€ν νκ²½
μλ°μ€ν¬λ¦½νΈλ λΈλΌμ°μ νκ²½ λλ Node.js νκ²½μμ μ€νμ΄ κ°λ₯ν©λλ€.
κΈ°λ³Έμ μΌλ‘ λΈλΌμ°μ μμ λμνλ μ½λλ Node.js νκ²½μμλ λμΌνκ² λμνμ§λ§ λΈλΌμ°μ μ Node.jsλ μ©λκ° λ€λ₯΄λ€λ μ μ μ£Όμν΄μΌ ν©λλ€.
λΈλΌμ°μ - HTML, CSS, JSλ₯Ό μ€ννμ¬ μΉ νμ΄μ§λ₯Ό λΈλΌμ°μ νλ©΄μ λ λλ§νλ κ²μ΄ λͺ©μ
Node.js - λΈλΌμ°μ μΈλΆμμ μλ°μ€ν¬λ¦½νΈ μ€ν νκ²½μ μ 곡νλ κ²μ΄ λͺ©μ
λ°λΌμ, λΈλΌμ°μ μ Node.jsλ λͺ¨λ μλ°μ€ν¬λ¦½νΈμ μ½μ΄μΈ ECMAScriptλ₯Ό μ€νν μ μμ§λ§ κ° νκ²½μμμ μΆκ° κΈ°λ₯μ μλ‘ μ§μνμ§ μμ΅λλ€.
μλ₯Ό λ€μ΄, λΈλΌμ°μ μ DOM API(νμ±λ HTML μμλ₯Ό μ ννκ³ μ‘°μνλ κΈ°λ₯)λ Node.jsμμ μ§μλμ§ μμΌλ©° λ°λλ‘ Node.jsμμ κΈ°λ³Έ μ 곡λλ νμΌ μμ€ν μ λΈλΌμ°μ μμλ μ§μλμ§ μμ΅λλ€.
3.2 μΉ λΈλΌμ°μ
λ³Έ ν¬μ€ν μμμ λΈλΌμ°μ λ κ΅¬κΈ ν¬λ‘¬ λΈλΌμ°μ λ₯Ό μλ―Έν©λλ€. ν¬λ‘¬μ ECMAScript μ¬μμ μ€μνλ©° μμ₯ μ μ μ¨λ κ°μ₯ λλ€λ νΉμ§μ κ°μ§κ³ μμ΅λλ€.
3.2.1. κ°λ°μ λꡬ
ν¬λ‘¬ λΈλΌμ°μ κ° μ 곡νλ κ°λ°μ λꡬλ μΉ μ ν리μΌμ΄μ κ°λ°μ μμ΄ νμμ μ΄κ³ κ°λ ₯ν λꡬμ λλ€. κΈ°λ³Έ λ΄μ₯λμ΄ μμ΄ λ³λλ‘ μ€μΉν νμκ° μμΌλ©° μλ λ¨μΆν€λ‘ μ΄ μ μμ΅λλ€.
Windows - F12 or Ctrl + Shift + I
macOS - command + option + I

μμ£Ό μ¬μ©νλ κ°λ°μ λꡬμ κΈ°λ₯μ μλ νμ κ°μ΅λλ€.
ν¨λ | μ€λͺ |
μμ (Elements) |
λ‘λ©λ μΉ νμ΄μ§μ DOMκ³Ό CSSλ₯Ό νΈμ§νμ¬ λ λλ§λ λ·°λ₯Ό νμΈν μ μμ΅λλ€. νΈμ§λ λ΄μ©μ μ μ₯λμ§ μμΌλ©° μΉ νμ΄μ§κ° μλλ λλ‘ λ λλ§λμ§ μμ κ²½μ°μ μ μ©νκ² μ¬μ©μ΄ κ°λ₯ν©λλ€. |
μ½μ (Console) |
λ‘λ©λ μΉ νμ΄μ§μ μλ¬λ₯Ό νμΈνκ±°λ JS μμ€ μ½λμ μμ±ν console.log λ©μλμ μ€ν κ²°κ³Όλ₯Ό νμΈν μ μμ΅λλ€. |
μμ€ (Sources) |
λ‘λ©λ μΉ νμ΄μ§μ JS μ½λλ₯Ό λλ²κΉ ν μ μμ΅λλ€. |
λ€νΈμν¬ (Network) |
λ‘λ©λ μΉ νμ΄μ§μ κ΄λ ¨λ λ€νΈμν¬ μμ² μ 보μ μ±λ₯μ νμΈν μ μμ΅λλ€. |
μ ν리μΌμ΄μ
(Application) |
μΉ μ€ν 리μ§, μΈμ , μΏ ν€λ₯Ό νμΈνκ³ κ΄λ¦¬ν μ μμ΅λλ€. |
3.2.2. μ½μ
μμμλ κ°λ¨ν μ€λͺ ν κ²μ²λΌ μ½μμ λ‘λ©λ μΉ νμ΄μ§μ μλ¬, console.log λ©μλμ μ€ν κ²°κ³Όλ₯Ό νμΈνλ μ©λλ‘ μ¬μ©ν μ μμ΅λλ€.
μΆκ°λ‘ μ½μ λ΄μμ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό μ§μ μ λ ₯νμ¬ κ²°κ³Όλ₯Ό νμΈνλ REPL(Read Eval Print Loop: μ λ ₯ μν μΆλ ₯ λ°λ³΅) νκ²½μΌλ‘λ μ¬μ© κ°λ₯ν©λλ€.

3.2.3. λΈλΌμ°μ μμ JS μ€ν / λλ²κΉ
λΈλΌμ°μ λ HTMLμ λ‘λνλ©΄ script νκ·Έμ ν¬ν¨λ JS μ½λλ₯Ό μ€νν©λλ€. λ§μΌ JS μ½λμ console.log λ©μλκ° νΈμΆλμλ€λ©΄ μ½μμ μ€ν κ²°κ³Όκ° μΆλ ₯λ©λλ€.
μλμ κ°μ JSκ° ν¬ν¨λ HTML νμΌμ μμ±νκ³ λΈλΌμ°μ λ₯Ό μ€ννλ©΄ μλ¬κ° λ°μν©λλ€.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>λ²νΌ ν΄λ¦</title>
</head>
<body>
<button id="btn">λ²νΌ</button>
<script>
const $button = document.getElementById('button');
$button.onclick = function () {
console.log('λ²νΌ ν΄λ¦');
}
</script>
</body>
</html>
λ§μΌ κ°λ°μ λꡬμ μ½μμ μ΄μ΄λ μνκ° μλλΌλ©΄ μλ¬κ° λ°μν μ¬μ€μ μμ차리기 μ΄λ ΅κΈ° λλ¬Έμ μ½μμ μΌλκ³ κ°λ°μ νλ κ²μ΄ μμ°μ± ν₯μμ ν° λμμ μ€λλ€.

μ°μΈ‘ νλ©΄ μ€ λΆν λ μλ νλ©΄(μ½μ)μ νμΈν΄λ³Έ κ²°κ³Ό, μλ¬κ° λ°μν μ¬μ€μ μ μ μμ΅λλ€.
μ°μΈ‘ νλ©΄ μ€ λΆν λ μ νλ©΄(μμ€)λ₯Ό νμΈνλ©΄ μλ¬ μ 보μ μλ¬κ° λ°μν μμΉλ₯Ό μ μ μμ΅λλ€.
μ΄ κ²½μ°μλ $button λ³μμ κ°μ΄ nullμ΄κΈ° λλ¬Έμ λ°μν μλ¬λ‘ script νκ·Έ λ΄λΆμμ μλͺ»λ id κ°μ ν΅νμ¬ getElementById λ©μλλ₯Ό μ€ννλ€λ κ²μ μ μ μμ΅λλ€.
3.3 Node.js
μΆν λ§μ μμ±νλλ‘ νκ² μ΅λλ€.