μλ°μ€ν¬λ¦½νΈ λ°νμκ³Ό μμ§: μΉκ³Ό μλ²μμμ λμ μ리
μλ°μ€ν¬λ¦½νΈλ μΉκ³Ό μλ² μμͺ½μμ μ€μν μν μ νλ μΈμ΄λ€. μλ°μ€ν¬λ¦½νΈκ° μ΄λ»κ² μ€νλλμ§λ₯Ό μ΄ν΄νκΈ° μν΄μλ μλ°μ€ν¬λ¦½νΈ λ°νμκ³Ό μλ°μ€ν¬λ¦½νΈ μμ§μ κ°λ μ μμμΌ νλ€.
μλ°μ€ν¬νΈ λ°νμ: μμ§κ³Ό API
μλ°μ€ν¬λ¦½νΈ λ°νμμ μλ°μ€ν¬λ¦½νΈ μ½λκ° μ€νλλ νκ²½μ λ§νλ©°, ν¬κ² μλ°μ€ν¬λ¦½νΈ μμ§κ³Ό API(λΌμ΄λΈλ¬λ¦¬ λ° λ°μ΄λ리)λ‘ κ΅¬μ±λλ€. μλ°μ€ν¬λ¦½νΈ λ°νμμ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό κΈ°κ³μ΄λ‘ λ³ννκ³ μ€ννλ μν μ νλ©°, μ΄ κ³Όμ μμ νμν APIμ λΌμ΄λΈλ¬λ¦¬λ₯Ό ν¨κ» μ 곡νλ€.
- μλ°μ€ν¬λ¦½νΈ μμ§: μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό μ½κ³ , μ΄λ₯Ό κΈ°κ³μ΄λ‘ λ³ννμ¬ μ€ννλ μν μ νλ€. μλ₯Ό λ€μ΄, κ΅¬κΈ ν¬λ‘¬μ V8 μμ§μ΄ λνμ μΈ μλ°μ€ν¬λ¦½νΈ μμ§μ΄λ€.
- JS Engine + Web API: μΉ λΈλΌμ°μ μμλ μλ°μ€ν¬λ¦½νΈ μμ§κ³Ό Web APIκ° κ²°ν©λμ΄ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό μ€ννλ€. Web APIλ DOM μ‘°μ, νμ΄λ¨Έ μ€μ , HTTP μμ² λ± λΈλΌμ°μ νκ²½μμ μμ£Ό μ¬μ©νλ κΈ°λ₯λ€μ μ 곡νλ€.
- Node.js = JS Engine + Node API: μλ² νκ²½μμλ Node.jsκ° μλ°μ€ν¬λ¦½νΈ μμ§κ³Ό Node APIλ₯Ό κ²°ν©νμ¬ μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό μ€ννλ€. Node APIλ νμΌ μμ€ν μ κ·Ό, λ€νΈμνΉ, I/O μ²λ¦¬ λ±μ μ§μνλ€.
μ΄μ²λΌ μλ°μ€ν¬λ¦½νΈ λ°νμμ μλ°μ€ν¬λ¦½νΈ μμ§κ³Ό κ° νλ«νΌμ λ§λ APIλ€μ κ²°ν©νμ¬, λ€μν νκ²½μμ μλ°μ€ν¬λ¦½νΈλ₯Ό μ€νν μ μκ² ν΄μ€λ€.
μλ°μ€ν¬λ¦½νΈ μμ§μ λμ λ°©μ
μλ°μ€ν¬λ¦½νΈ μμ§μ κΈ°λ³Έμ μΌλ‘ μ±κΈ μ€λ λλ‘ λμνλ©°, μ£Όλ‘ λ κ°μ§ λ©λͺ¨λ¦¬ κ΅¬μ‘°μΈ Stackκ³Ό Heapμ μ¬μ©νλ€.
- Stack: ν¨μ νΈμΆμ΄ μ΄λ£¨μ΄μ§ λ, ν¨μ μ€ν μμλλ‘ μ μ¬λκ³ μ²λ¦¬λλ λ©λͺ¨λ¦¬ μμμ΄λ€. μ€νμ LIFO(Last In, First Out) λ°©μμΌλ‘ μλνλ©°, ν¨μ νΈμΆμ΄ μλ£λλ©΄ μ€νμμ μ κ±°λλ€.
- Heap: λμ μΌλ‘ ν λΉλ λ©λͺ¨λ¦¬κ° μ μ₯λλ μμμ΄λ€. κ°μ²΄λ λ°°μ΄κ³Ό κ°μ λ°μ΄ν°κ° νμ μ μ₯λλ©°, μ€νκ³Ό λ¬λ¦¬ μμ°¨μ μΌλ‘ κ΄λ¦¬λμ§ μλλ€.
μ΄λ¬ν ꡬ쑰λ μλ°μ€ν¬λ¦½νΈκ° μ±κΈ μ€λ λ νκ²½μμλ λΉλκΈ° μ²λ¦¬λ₯Ό ν¨μ¨μ μΌλ‘ μνν μ μκ² νλ€.
λΉλκΈ° μ²λ¦¬μ μ΄λ²€νΈ 루ν
μλ°μ€ν¬λ¦½νΈλ κΈ°λ³Έμ μΌλ‘ μ±κΈ μ€λ λλ‘ λμνμ§λ§, λΉλκΈ° μ²λ¦¬λ₯Ό ν΅ν΄ λ©ν°νμ€νΉμ κ°λ₯νκ² νλ€. λΉλκΈ° μ²λ¦¬λ μΉ λΈλΌμ°μ μ Node.js νκ²½μμ λ€λ₯΄κ² ꡬνλμ§λ§, 곡ν΅μ μΌλ‘ μ΄λ²€νΈ 루ν(Event Loop)λ₯Ό μ¬μ©νλ€.
- μΉ λΈλΌμ°μ μμμ λΉλκΈ° μ²λ¦¬:
- λκΈ°μ€(Task Queue): λΉλκΈ° ν¨μκ° μλ£λλ©΄, μ½λ°± ν¨μκ° λκΈ°μ€μ μ μ¬λλ€.
- λ¬Έμ§κΈ°(Event Loop): μ΄λ²€νΈ 루νκ° λκΈ°μ€μ λͺ¨λν°λ§νλ©°, μ€νμ΄ λΉμ΄ μμ λ μ½λ°± ν¨μλ₯Ό μ€νμΌλ‘ μ΄λμμΌ μ€ννλ€.
- μμ μ₯(Stack + Heap): μ½λ°± ν¨μκ° μ€νμμ μ€νλλ©°, νμν λ°μ΄ν°λ νμμ κ°μ Έμ¨λ€.
- Node.jsμμμ λΉλκΈ° μ²λ¦¬:
- Node.jsλ μΉ λΈλΌμ°μ μ λ¬λ¦¬ μλ² νκ²½μμ λΉλκΈ° μ²λ¦¬λ₯Ό μν΄ LIBUVλΌλ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ λ©ν°μ€λ λ I/O μ²λ¦¬λ₯Ό μ§μνλ€. μ΄λ₯Ό ν΅ν΄ Node.jsλ λΉλκΈ° μμ μ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκ³ , κ³ μ±λ₯ μλ² μ ν리μΌμ΄μ μ ꡬμΆν μ μλ€.
Web Worker API: μλ°μ€ν¬λ¦½νΈμμ λ©ν°μ€λ λ μ§μ
μλ°μ€ν¬λ¦½νΈλ κΈ°λ³Έμ μΌλ‘ μ±κΈ μ€λ λλ‘ λμνμ§λ§, Web Worker APIλ₯Ό μ¬μ©νλ©΄ λ©ν°μ€λ λλ₯Ό μ§μ νμ©ν μ μλ€. μ΄λ νΉν νλ‘ νΈμλ κ°λ°μκ° λ³΅μ‘ν μ°μ°μ λ°±κ·ΈλΌμ΄λμμ μ²λ¦¬νκ³ , λ©μΈ μ€λ λμ μ±λ₯μ μ΅μ ννκ³ μ ν λ μ μ©νλ€.
- μ¬μ© λ°©λ²:
- κ°μ μ¬μ©: setTimeout, setIntervalκ³Ό κ°μ Web APIλ₯Ό ν΅ν΄ λΉλκΈ°μ μΌλ‘ μμ μ μ²λ¦¬ν μ μλ€.
- μ§μ μ¬μ©: postMessage, onmessage λ±μ APIλ₯Ό μ¬μ©ν΄ Pub/Sub ν¨ν΄μΌλ‘ λ©ν°μ€λ λλ₯Ό ꡬνν μ μμΌλ©°, μ€λ λ κ° ν΅μ μ μν΄ MessageChannelμ νμ©ν μ μλ€.
μλ°μ€ν¬λ¦½νΈ νλ μμν¬μ λ°νμμ κ²°ν©
μλ°μ€ν¬λ¦½νΈ νλ μμν¬λ μλ°μ€ν¬λ¦½νΈ λ°νμ νκ²½μμ λμνλ©°, 볡μ‘ν μ ν리μΌμ΄μ κ°λ°μ λ¨μννλ€. νλ μμν¬λ μ¬λ¬ λΌμ΄λΈλ¬λ¦¬λ₯Ό κ²°ν©νμ¬ λ¨μΌ λͺ©μ μ λμ΄μ λ€μν κΈ°λ₯μ μ 곡νλ€.
- λΌμ΄λΈλ¬λ¦¬μ νλ μμν¬:
- λΌμ΄λΈλ¬λ¦¬: νΉμ κΈ°λ₯μ μ 곡νλ λ¨μΌ λͺ©μ μ μ½λ λͺ¨μ. μλ₯Ό λ€μ΄, jQueryλ DOM μ‘°μμ νΉνλ λΌμ΄λΈλ¬λ¦¬λ€.
- νλ μμν¬: μ¬λ¬ λΌμ΄λΈλ¬λ¦¬μ ν΄μ κ²°ν©νμ¬ μ’ ν©μ μΈ κ°λ° νκ²½μ μ 곡νλ€. μλ₯Ό λ€μ΄, Reactλ μ¬μ©μ μΈν°νμ΄μ€λ₯Ό ꡬμΆνλ λ° νμν λꡬλ€μ ν¬ν¨ν νλ μμν¬μ΄λ€.
ν΄λΉ μμμ ν΅ν΄ μλ°μ€ν¬λ¦½νΈ λμμ리μ λν΄ μ½κ² μ΄ν΄ν μ μλ€.
https://www.youtube.com/watch?v=v67LloZ1ieI
βΉοΈμ°Έκ³
[ASAC 6κΈ° κ°μμλ£]
https://www.youtube.com/watch?v=v67LloZ1ieI
'π»DEV-STUDY > JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JavaScript ν¨μ λ΄ thisμ λ©μλ λ΄ this μ°¨μ΄ (1) | 2024.09.09 |
---|---|
JavaScript ν¨μ μμ± λ°©λ² (1) | 2024.09.08 |
μλ°μ€ν¬λ¦½νΈ μμ§μ μν λ°©μ = ν¨μ μ€ν μ리 (0) | 2024.09.05 |
JavaScript λ³μ, ν¨μ μ μ λ° μ¬μ© (0) | 2024.09.05 |
JavaScript ν¨μν νλ‘κ·Έλλ° ν¨λ¬λ€μ (4) | 2024.09.04 |