π λ°νμμ΄λ?
- λ°νμμ΄λ νλ‘κ·Έλλ° μΈμ΄κ° ꡬλλλ νκ²½μ λ§νλ€.
- μλ°μ€ν¬λ¦½νΈ λ°νμμ μ’ λ₯λ‘λ μΉ λΈλΌμ°μ (ν¬λ‘¬, νμ΄μ΄νμ€, μ΅μ€νλ‘λ¬ λ±)νλ‘κ·Έλ¨κ³Ό Node.js λΌλ νλ‘κ·Έλ¨μ΄ μλ€.
π JavaScript - μ±κΈ μ€λ λ, λ Ό-λΈλ‘νΉ μΈμ΄
μ±κΈ μ€λ λ
μ±κΈ μ€λ λλ νλμ ν μμκ³Ό νλμ μ½ μ€νμ κ°μ§λ€. νλμ μ½ μ€νμ κ°μ§λ€λ μλ―Έλ ν λ²μ ν κ°μ§ μΌ λ°μ νμ§ λͺ»νλ€λ μλ―Έμ΄λ€. μλ₯Ό λ€μ΄ λ€νΈμν¬ μμ²μ νλ€λ©΄, μλ΅μ΄ μ¬ λκΉμ§ λ€λ₯Έ μΌμ νμ§ λͺ»νκ³ λ§λ₯ κΈ°λ€λ¦΄ μλ°μ μλ€.
μ½ μ€ν
ν¨μκ° μ€νλλ μμλ₯Ό κΈ°μ΅νκ³ μλ€. ν¨μλ₯Ό μ€ννλ €λ©΄ μ€νμ κ°μ₯ μμ ν΄λΉ ν¨μλ₯Ό λ£κ² λκ³ , ν¨μμμ 리ν΄μ΄ μΌμ΄λλ©΄ μ€νμ κ°μ₯ μμͺ½μμ ν¨μλ₯Ό κΊΌλΈλ€.
μ½ μ€ν μμ
μ½ μ€ν μλ¬ λ©μμ§
μ΄λ€ ν¨μμμ μλ¬κ° λ°μνλμ§ λ‘κ·Έλ₯Ό 보μ¬μ€λ€. μλ¬ λ‘κ·Έμ μΆλ ₯λλ κ²λ€μ΄ μ½ μ€νμ κ°λ€μ΄λ€.
μ€ν μ€λ² νλ‘μ°
μ½ μ€νμ΄ κ°λ μ°¨λ¬ λ°μνλ μλ¬μ΄λ€.
π λΈλ‘νΉ
μ½ μ€νμ΄ λ©μΆ μνλ₯Ό λΈλ‘νΉ μνλΌκ³ νλ€.
μΉ λΈλΌμ°μ μμ μ½λκ° μ€νλλλ°, μ½λκ° μ’ λ£λ λκΉμ§ μ μ κ° ν΄λ¦μ ν΄λ μ΄λ ν λ°μμ νμ§ μλ μνκ° λλ€. μ¬μ©μμκ² μνν μ 곡μ μν΄ μ½ μ€νμ΄ λ©μΆκ² ν΄μλ μλλ€. λΈλ‘νΉ μνλ₯Ό ν΄κ²°νλ λ°©λ²μ λ Ό-λΈλ‘νΉ, λΉλκΈ° μ½λ°±μ μ¬μ©νλ κ²μ΄λ€.
π λ Ό-λΈλ‘νΉ
μ±κΈ μ€λ λλ μ€νμ΄ νλλ°μ μκΈ° λλ¬Έμ, ν λ²μ ν κ°μ§ μΌμ νλ€. λ€νΈμν¬ μμ²μ νλ€λ©΄ μλ΅μ΄ μ¬ λκΉμ§ λ€λ₯Έ μΌμ νμ§ λͺ»νκ³ κΈ°λ€λ €μΌ νλ€.
π μλ°μ€ν¬λ¦½νΈ λ°νμ
- μ±κΈ μ€λ λμΈ μλ°μ€ν¬λ¦½νΈκ° λ§€λ² 5μ΄κ° μ§λ¬λμ§ μ²΄ν¬νμ§ μκ³ , 5μ΄ νμ μ½λ°±μ νΈμΆν μ μλ μ΄μ λ λΈλΌμ°μ κ° μλ°μ€ν¬λ¦½νΈλ₯Ό μ€ννλ κ² μ΄μμ μλ―Έλ₯Ό κ°μ§κΈ° λλ¬Έμ΄λ€.
- μλ°μ€ν¬λ¦½νΈ λ°νμμ μλ°μ€ν¬λ¦½νΈ μμ§, Web API, μ½λ°± ν, μ΄λ²€νΈ 루ν, λ λ νλ‘ κ΅¬μ±λλ€.
π μλ°μ€ν¬λ¦½νΈ μμ§ - V8
- ν¬λ‘¬μ μλ°μ€ν¬λ¦½νΈ μμ§μΌλ‘ V8μ μ¬μ©νκ³ μλ€.
- C++λ‘ λ§λ€μ΄μ Έ μμΌλ©°, Node.js, ν¬λ‘¬ λΈλΌμ°μ λ±μμ μ¬μ©λλ€.
- V8μ μ±κΈ μ€λ λλ₯Ό μ 곡νλ€. μ±κΈ μ€λ λλ νλμ μ½ μ€ν(Call Stack)κ³Ό νλμ ν(Heap)μ μ 곡νλ€. μ½ μ€νμ μμμ μ΄μΌκΈ°νλ―μ΄ ν¨μμ νΈμΆ μμλ₯Ό μ μ₯νλ€. νμ ν λΉλ λ©λͺ¨λ¦¬λ€μ΄ μ μ₯λλ μμμ΄λ€.
- νλμ μ½ μ€νμ κ°μ§κ³ μλ€λ λ§μ ν λ²μ νλμ λμλ§ ν μ μλ€λ μλ―Έμ΄λ€. νμ§λ§ λ²μ μ΄ setTimeoutμ΄λ ajax(HTTP μμ²), DOM μ΄λ²€νΈ λ± μ½λ°±μΌλ‘ λΉλκΈ° λμμ νλλ‘ μ½λ©νκ³ μλ€. μ¬μ§μ΄ V8 μμ€μλ μ΄λ¬ν λ©μλλ€μ΄ μ μλμ΄ μμ§λ μλ€.
- setTimeout(..., 5000)κ° νΈμΆλμμ λ, λκ° 5μ΄λ₯Ό μΉ΄μ΄νΈνκ³ 5μ΄ νμ μ½λ°± ν¨μλ₯Ό μ€νμν€λ κ±ΈκΉ?
- μ΄ μν μ νλ μΉκ΅¬κ° λ°λ‘ Web APIμ΄λ€.
π Web API
Web APIλ μλ°μ€ν¬λ¦½νΈ μμ§μμ μ μλμ§ μμλ setTimeoutμ΄λ HTTP μμ² λ©μλ, DOM μ΄λ²€νΈ λ±μ λ©μλλ₯Ό μ§μνλ€.
π μ½λ°± ν
μ½λ°± νλ Web API κ²°κ΄κ°μ μμ λλ νμ΄λ€. μλ₯Ό λ€μ΄ μλ°μ€ν¬λ¦½νΈμμ setTimeout(cb, 5000)λ₯Ό νΈμΆνκ² λλ©΄, Web APIλ νμ΄λ¨Έλ₯Ό λμμμΌ 5μ΄ νμ μ½λ°± νμ, cbμ μλλ€.
π μ΄λ²€νΈ ν
μ΄λ²€νΈ 루νλ μ½ μ€νκ³Ό μ½λ°± νλ₯Ό κ΄μ°°νλ μν μ νλ€. μ½ μ€νμ΄ λΉμ΄ μμΌλ©΄ μ½λ°± νμ 첫 λ²μ§Έ μ½λ°±μ μ€νμ μλλ€.
π μλ°μ€ν¬λ¦½νΈ λ°νμ λμ μμ
0μ΄ ν μ€ν. μ¦μ μ€νλ κ² κ°μ§λ§ μ€μ λ‘λ μλλ€. μλ? μ½ μ€νμ΄ λΉμ΄μμ§ μκΈ° λλ¬Έμ΄λ€.
μ΄λ²€νΈ 루νλ μ½ μ€νμ΄ λΉμ΄μμ λκΉμ§ κΈ°λ€λ¦¬λ€κ° μ½ μ€νμ΄ λΉκ² λλ©΄ μ½λ°± νμ 첫 λ²μ§Έ μ½λ°±μ μ€νμ μλλ€.
μ°Έκ³
'TIL' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ€ν 컨ν μ€νΈ (1) | 2023.10.11 |
---|---|
useRef γ» Cookie (0) | 2023.07.28 |
requireμ import γ» const (0) | 2023.07.27 |
This γ» λΈλΌμ°μ μ μ₯μ (0) | 2023.07.26 |
HTTP γ» Position (0) | 2023.07.25 |