JavaScript μ±λ₯ 2λ°°λ‘ λμ΄λ 7κ°μ§ λΉλκΈ° μ²λ¦¬ μ΅μ ν κΈ°λ² ππ»β¨
μλ νμΈμ!π νΉμ μ¬λ¬λΆμ΄ JavaScriptλ₯Ό μ¬μ©νλ©΄μ "μ λ΄ μ±μ΄ λ리μ§?"π λΌλ κ³ λ―Ό, ν λ²μ―€μ ν΄λ³΄μ ¨μ κ±°μμ.π€ νΉν λΉλκΈ° μ²λ¦¬μμ ν¨μ¨μ΄ λ¨μ΄μ§λ©΄ μ±λ₯ μ νκ° λμ λκ² λνλμ£ . μ€λμ λ°λ‘π "JavaScript μ±λ₯μ 2λ°°λ‘ λμ΄λ λΉλκΈ° μ²λ¦¬ μ΅μ ν κΈ°λ²"μ μμ ν΄μ μκ°νλ €κ³ ν΄μ.πβ¨ μ΄ κΈμ΄ λλ λ, μ¬λ¬λΆμ μ½λπ»κ° ν¨μ¬ λΉ λ₯΄κ³ κΉλν΄μ§ κ±°μμ! π
π₯ μ λΉλκΈ° μ²λ¦¬κ° μ€μνκ°? π€
- β μ¬μ©μ κ²½ν ν₯μ! λΉ λ₯Έ λ°μ μλ ποΈ
- β μλ² λΆν μ€μ΄κΈ° π
- β ν¨μ¨μ μΈ μμ κ΄λ¦¬ βοΈ
- β νΌν¬λ¨Όμ€ λ³λͺ© ν΄κ²°! π
νμ§λ§ μλͺ»λ λΉλκΈ° ꡬνμ μ€νλ € μ±λ₯μ λ§κ°λ¨λ¦΄ μ μμ΄μ. κ·Έλμ μ€λμ μ λλ‘ λ μ΅μ ν λΉλ²μ μλ €λ릴κ²μ!π―
π JavaScript λΉλκΈ° μ±λ₯ κ·Ήλν 7κ°μ§ λΉλ²
1οΈβ£ λΉλκΈ° ν¨μμ λ³λ ¬ μ²λ¦¬ βοΈ
β μ€λͺ : μ¬λ¬ λΉλκΈ° μμ μ μ°¨λ‘λ‘ μννλ λμ , λμμ μ€ννλ©΄ μ 체 μκ°μ΄ ν¬κ² λ¨μΆλΌμ!
πΉ ν΄λμ λ°©λ²: Promise.all()
νμ©
πΉ TIP: λ³λ ¬λ‘ μ²λ¦¬ν μ μλ μμ
λ€μ κΌ Promise.all()
λ‘ λ¬ΆκΈ°!
πΉ μμ:
javascript
await Promise.all([fetchData1(), fetchData2(), fetchData3()]);
2οΈβ£ async
/await
μ μ μ ν μ¬μ© π‘
β μ€λͺ : μ½λ°± μ§μ₯μμ λ²μ΄λ κ°λ μ± λμ΄λ©΄μλ μ±λ₯ μ ν μμ΄ λΉλκΈ°λ₯Ό μ μ΄ν μ μμ΄μ!
πΉ TIP: κ°λ₯νλ©΄ λ³λ ¬ μ²λ¦¬ ν await
μ¬μ©νκΈ°
πΉ κΏν: await
λ₯Ό 무쑰건 μ§λ ¬λ‘ μ¬μ©νλ κ²λ³΄λ€, λ³λ ¬λ‘ λ¬Άμ΄μ μ²λ¦¬νλ©΄ λ λΉ λ¦
λλ€!
3οΈβ£ Web Workers
νμ©ν΄μ UI λΈλ‘ λ°©μ§ π§ π»
β μ€λͺ : λ¬΄κ±°μ΄ μ°μ°μ λ³λ μ°λ λμμ μ²λ¦¬νλ©΄, λ©μΈ μ€λ λκ° λ©μΆμ§ μμμ!
πΉ μ₯μ : UIκ° λκΉ μμ΄ μΎμ νκ² μ μ§
πΉ TIP: κ³μ°λμ΄ λ§μ μμ
μ μ κ·Ή μ¬μ©!
πΉ μμ:
javascript
const worker = new Worker('worker.js');
worker.postMessage(data);
worker.onmessage = (e) => { /* μ²λ¦¬ */ };
4οΈβ£ λΉλκΈ° μμ²μ μΊμ± μ λ΅ π¦
β μ€λͺ : μ΄λ―Έ μμ²ν λ°μ΄ν°λ₯Ό μ μ₯(μΊμ)ν΄μ, μ¬μμ² μ λΆνμν λ€νΈμν¬ νΈμΆ λ°©μ§!
πΉ TIP: Map
μ΄λ WeakMap
νμ©νκΈ°
πΉ μμ:
javascript
const cache = new Map();
async function getData(url) {
if (cache.has(url)) return cache.get(url);
const data = await fetch(url).then(res => res.json());
cache.set(url, data);
return data;
}
5οΈβ£ Lazy Loading
μΌλ‘ νμν λλ§ πΆβοΈπΆβοΈ
β μ€λͺ : λͺ¨λ λ°μ΄ν°λ₯Ό νλ²μ λΆλ¬μ€λ κ²λ³΄λ€, νμν λ λ‘λνλ λ°©μμΌλ‘ νΌν¬λ¨Όμ€ ν₯μ!
πΉ μ μ©μ²: μ΄λ―Έμ§, λͺ¨λ, μ»΄ν¬λνΈ λ±
πΉ TIP: import()
λ‘ λμ μν¬νΈ μ¬μ©νκΈ°!
πΉ μμ:
javascript
button.onclick = () => {
import('./heavyModule.js').then(module => {
module.loadHeavyFunction();
});
};
6οΈβ£ μ μ ν Throttle
κ³Ό Debounce
μ μ© πβοΈπ
β μ€λͺ : μ¬μ©μ μ λ ₯μ΄λ μ΄λ²€νΈκ° μ°μμ μΌλ‘ μΌμ΄λ λ, λΆνμν μμ² λ°©μ§!
πΉ Throttle: μΌμ μκ°λ§λ€ ν λ²λ§ μ€ν
πΉ Debounce: λ§μ§λ§ μ
λ ₯ ν μΌμ μκ° λ€μ μ€ν
πΉ TIP: μ΄λ²€νΈ νΈλ€λ¬ μ΅μ νλ‘ μλ² μμ² μ μ€μ΄κΈ°!
7οΈβ£ Async Queue
νμ©ν΄μ μμ
μμ κ΄λ¦¬ π
β μ€λͺ : λΉλκΈ° μμ μ΄ λ무 λ§κ±°λ μμκ° μ€μν κ²½μ°, νλ‘ μ μ΄!
πΉ μ₯μ : λ³λͺ© ν΄κ²° + μμ ν¨μ¨μ
πΉ TIP: async queue
λΌμ΄λΈλ¬λ¦¬ λλ μ§μ ꡬννκΈ°
πΉ μμ:
javascript
const taskQueue = [];
async function processQueue() {
while (taskQueue.length) {
const task = taskQueue.shift();
await task();
}
}
// μμ
λ£κΈ°
taskQueue.push(() => fetchData());
processQueue();
π― μ΅μ ν μ λ΅ μ€μ 체ν¬λ¦¬μ€νΈ! β
- β
λ³λ ¬ μ²λ¦¬ν μ μλ μμ²μ
Promise.all()
μ λ£κΈ° - β
async/await
λ₯Ό μ μ ν λ°°μΉν΄μ κΈ°λ€λ¦Ό μ΅μν! - β
λ¬΄κ±°μ΄ μ°μ°μ
Web Workers
μ λ§‘κΈ°κΈ° - β μ¬μ¬μ© κ°λ₯ν λ°μ΄ν°λ₯Ό μΊμνκΈ°
- β
νμμλ λ°μ΄ν° μμ²μ
Lazy Loading
μΌλ‘ μ€μ΄κΈ° - β
μ΄λ²€νΈ μ²λ¦¬λ
Throttle
,Debounce
λ‘ μ΅μ ν - β
μμ
μμκ° μ€μν κ²½μ°
Async Queue
νμ©νκΈ°
π§ ν & μ μμ¬ν π
β νμ ν
μ€νΈ λ¨Όμ ! μ΅μ νλ₯Ό ν λλ§λ€ μ±λ₯ 체ν¬λ₯Ό μμ§ λ§μΈμ!β
β λΉλκΈ° μ²λ¦¬λ μ μ€! λ³λ ¬ μ²λ¦¬λ‘ νΌν¬λ¨Όμ€ ν₯μμ μ’μ§λ§, μλ² λΆνλ κ³ λ €!β οΈ
β μ½μ€λ£¨λ₯Ό μ£Όμ! λ무 λ§μ Promise.all()
λ μ€νλ € μλ²μ λΆλ΄μ μ€ μ μμ΄μπ₯
β λ§μ§λ§ ν λ§λ! π¬
λΉλκΈ°λ₯Ό μ¬λ°λ₯΄κ² νμ©νλ λ°©λ²μ μλ©΄, β‘ μ¬λ¬λΆμ μΉ μ ν리μΌμ΄μ μ λ κΉμ§ν μ¬μ΄μ μλ 2λ°°! π μμν κ²½νμ μ 곡ν μ μμ΄μ. μ§κΈ λ°λ‘ μ΄ 7κ°μ§ κΈ°λ²μ μ μ©ν΄μ βοΈ λ λΉ λ₯΄κ³ λ§€λλ¬μ΄ μΉ μλΉμ€λ₯Ό λ§λ€μ΄ 보μΈμ!π§π»π
π ν¬μΈνΈ μ 리! μ΄λ² κΈμ ν΅μ¬ 5κ°μ§ π₯
1οΈβ£ λ³λ ¬ μ²λ¦¬λ‘ μκ° λ¨μΆ! π
2οΈβ£ async/await
μ ν¨μ¨μ μ¬μ©λ² π‘
3οΈβ£ λ¬΄κ±°μ΄ μμ
μ Web Workers
λ‘! π§
4οΈβ£ μ¬μμ² λ°©μ§μ© μΊμ μ λ΅ π¦
5οΈβ£ μ΄λ²€νΈλ Throttle
κ³Ό Debounce
λ‘ μ΅μ ν!
μ¬κΈ°κΉμ§ μ½μ΄μ£Όμ
μ κ°μ¬νκ³ μ! π λ κΆκΈν μ μ΄λ κΆκΈμ¦ ν΄κ²°μ μν΄ μΈμ λ μ§λ¬Έ μ£ΌμΈμ! π€
μ±λ₯ ν₯μ λμμ , μ§κΈ λ°λ‘ μμνμΈμ! π₯π₯π₯
μ΄μ κΈ λ³΄κΈ°!!
μμ΄ν°μΌλ‘ DSLRκΈ μ¬μ§ μ°λ νλ‘RAW νμ©λ² 7κ°μ§ μ¨κ²¨μ§ ν
π±μμ΄ν°μΌλ‘ DSLRκΈ μ¬μ§ μ°λ νλ‘RAW νμ©λ² 7κ°μ§ μ¨κ²¨μ§ νπμ¬λ¬λΆ, νΉμ μμ΄ν°μΌλ‘ μ°μ μ¬μ§μ΄ λ무 νλ²νκ² λκ»΄μ§ μ μμΌμ κ°μ? πΈβ¨ “μ΄ μ λλ©΄ μΆ©λΆνμ§ μμκΉ?” νλ©° λκΈ°
5.asmrbita.com