π (31) μΈλ€μΌν 리μ€νΈν [JavaScript / λΉλκΈ° μ²λ¦¬] AJAX / Callback, Promise, async, await π λκΈ°(Synchronous) νλ‘κ·Έλλ° vs λΉλκΈ°(Asynchronous) νλ‘κ·Έλλ° λκΈ° νλ‘κ·Έλλ°μ μ½λκ° λ°λμ μμ±λ μμλλ‘ μ€νλλ λ°©μμ΄λ€. λΉλκΈ° νλ‘κ·Έλλ°μ μ½λμ μ²λ¦¬κ° μλ£λ λκΉμ§ κΈ°λ€λ¦¬μ§ μκ³ λ€λ₯Έ μ½λλ₯Ό μ²λ¦¬νλ λ°©μμ΄λ€. π λΉλκΈ° μ²λ¦¬ μ¬λ‘ > AJAX μλ°μ€ν¬λ¦½νΈλ₯Ό μ¬μ©ν λΉλκΈ° ν΅μ μ΄λ©°, ν΄λΌμ΄μΈνΈμ μλ²κ°μ XML λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λ κΈ°μ μ΄λ€. XMLHttpRequest κ°μ²΄λ₯Ό μ΄μ©ν΄μ μ 체 νμ΄μ§λ₯Ό 리λ‘λνμ§ μκ³ νμν λ°μ΄ν°λ§ λ‘λν μ μλ€λ μ₯μ μ΄ μλ€. π λΉλκΈ° μ²λ¦¬ λ°©λ² β > μ½λ°±(Callback) ν¨μ ν¨μ μ€ν κ²°κ³Όκ°μ 리ν΄μ΄ μλ 맀κ°λ³μλ‘ λμ΄μ¨ ν¨μλ₯Ό νΈμΆνμ¬ λ겨주λ λ°©μμ΄λ€. π μ½λ°± ν¨μ μ¬μ©νλ μ΄μ νΉμ λ‘μ§μ΄ λλ¬μ λ μνλ λμ.. [JavaScript] μλ°μ€ν¬λ¦½νΈλ 'μ΄λ²€νΈ κΈ°λ°', 'λ ΌλΈλ‘νΉ' λ°©μμ μ¬μ©νκ³ 'μ±κΈ μ€λ λ' μΈμ΄μ΄λ€. μλ°μ€ν¬λ¦½νΈλ μ±κΈ μ€λ λ μΈμ΄μ΄λ€. νμ§λ§ μ€μ μ¬μ©μμλ λ§μ μμ μ΄ λμμ μ²λ¦¬λλ λ©ν° μ€λ λμ²λΌ 보μ΄λλ° μ κ·Έλ° κ²μΌκΉ? μλ°μ€ν¬λ¦½νΈλ μ΄λ»κ² 'λμμ±(Concurrency)'μ μ§μνλ κ²μΌκΉ? λ°λ‘ μ¬κΈ°μ λ±μ₯νλ κ°λ μ΄ μ΄λ²€νΈ 루νμ΄λ€. π μ΄λ²€νΈ κΈ°λ°(event-driven)μ΄λ? μ΄λ²€νΈ κΈ°λ°μ΄λ μ΄λ²€νΈκ° λ°μν λ 미리 μ§μ ν΄λ μμ μ μννλ λ°©μμ μλ―Ένλ€. βͺ μ΄λ²€νΈ 루ν μ΄λ²€νΈ λ°μ μ νΈμΆν μ½λ°± ν¨μλ€μ κ΄λ¦¬νκ³ , νΈμΆλ μ½λ°± ν¨μμ μ€ν μμλ₯Ό κ²°μ νλ€. λͺ¨λ μ΄λ²€νΈκ° μ’ λ£λ λ κΉμ§ μ΄λ²€νΈ μ²λ¦¬λ₯Ό μν μμ μ λ°λ³΅νλ―λ‘ λ£¨νλΌκ³ λΆλ¦°λ€. μ½ μ€νμμ μ€ν μ€μΈ κ²μ΄ μλμ§ νμΈνκ³ , μ½λ°± νμ μμ μ΄ μλμ§ νμΈν΄μ μ½ μ€νμ΄ λΉμλ€λ©΄ μ½λ°± ν λ΄μ μμ μ μ½ μ€νμΌλ‘ .. [JavaScript] κ°λΉμ§μ»¬λ ν°(Garbage Collector)λ? / μν , λμ μ리 π κ°λΉμ§μ»¬λ ν°(Garbage Collector)λ? μ¬κΈ°μ κ°λΉμ§λ 'μ 리λμ§ μμ λ©λͺ¨λ¦¬', 'μ ν¨νμ§ μμ λ©λͺ¨λ¦¬ μ£Όμ'λ₯Ό λ§νλ€. κ°λΉμ§ 컬λ ν°λ μ΄λ¬ν νμμλ μ 보λ€, κ°λΉμ§λ€μ μΈμ΄ λ΄μ λ²λ¦ΌμΌλ‘μ¨ λ©λͺ¨λ¦¬λ₯Ό κ΄λ¦¬ν΄μ€λ€. π κ°λΉμ§μ»¬λ ν° λμ μ리 μλ°μ€ν¬λ¦½νΈμμ λ³μλ μ§μ μ μΌλ‘ μ°Έμ‘° κ°(λ¬Έμμ΄, κ°μ²΄, λ°°μ΄)μ λ΄κ³ μμ§ μκ³ , ν΄λΉ κ°μ λ©λͺ¨λ¦¬ μμ μ μ₯λλ€. κ·Έλμ μ°Έμ‘° κ°μ μμ±νκ³ λμ λμ΄μ μ°Έμ‘°ν κ²μ΄ μκ±°λ λΉμ΄μ‘μ λ κ°λΉμ§ 컬λ ν°κ° λμνμ¬ λ©λͺ¨λ¦¬κ° λ°νλλ€. (λ©λͺ¨λ¦¬λ₯Ό λ€μ μ¬μ¬μ© ν μ μλ μνκ° λλ€.) π μ°Έκ³ μλ£ κ°λΉμ§ 컬λ ν°κ° λνλ 건κ°μ? νλ‘ νΈμλ κ°λ°μ λ©΄μ μ§λ¬Έ μ 리 π‘ κ°μ΄ 보면 μ’μ Post [JavaScript] μλ°μ€ν¬λ¦½νΈλ 'μ΄λ²€νΈ κΈ°λ°', .. [JavaScript] λ©λͺ¨λΌμ΄μ μ΄μ (Memoization)μ΄λ? π λ©λͺ¨λΌμ΄μ μ΄μ (Memoization)μ΄λ? μ»΄ν¨ν° νλ‘κ·Έλ¨μ΄ λμΌν κ³μ°μ λ°λ³΅ν΄μΌ ν λ, μ΄μ μ κ³μ°ν κ°μ λ©λͺ¨λ¦¬μ μ μ₯νμ¬ κ·Έκ²μ νμ©ν¨μΌλ‘μ¨ λ°λ³΅ μνμ μ κ±°νλ€. νλ‘κ·Έλ¨ μ€ν μλκ° λΉ¨λΌμ§λ€. π μ°Έκ³ μλ£ μλ°μ€ν¬λ¦½νΈ λ©λͺ¨λΌμ΄μ μ΄μ μμ 보기 π‘ κ°μ΄ 보면 μ’μ Post [JavaScript] μλ°μ€ν¬λ¦½νΈλ 'μ΄λ²€νΈ κΈ°λ°', 'λ ΌλΈλ‘νΉ' λ°©μμ μ¬μ©νκ³ 'μ±κΈ μ€λ λ' μΈμ΄μ΄λ€. μλ°μ€ν¬λ¦½νΈλ μ±κΈ μ€λ λ μΈμ΄μ΄λ€. νμ§λ§ μ€μ μ¬μ©μμλ λ§μ μμ μ΄ λμμ μ²λ¦¬λλ λ©ν° μ€λ λμ²λΌ 보μ΄λλ° μ κ·Έλ° κ²μΌκΉ? μλ°μ€ν¬λ¦½νΈλ μ΄λ»κ² 'λμμ±(Concurrency)'μ μ§μν devjindev.tistory.com [JavaScript] λ©μλ 체μ΄λ(Method Chaining)μ΄λ? π λ©μλ 체μ΄λ(Method Chaining)μ΄λ? μ¬λ¬ λ©μλλ₯Ό μ΄μ΄μ νΈμΆνλ λ¬Έλ²μ΄λ€. λ©μλκ° κ°μ²΄(this)λ₯Ό λ°ννμ¬ μ¬λ¬ λ©μλλ₯Ό μμ°¨μ μΌλ‘ μ μΈν μ μλλ‘ νλ€. π μ₯λ¨μ μ₯μ μ½λκ° κ°κ²°ν΄μ Έ νλμ λ¬Έμ₯μ²λΌ μ½ν μ μλ€. μ₯κΈ°μ μΌλ‘ μ μ§λ³΄μμ λμμ΄ λλ€. λ¨μ νλμ λΌμΈμμ λ무 λ§μ μΌμ΄ μΌμ΄λ λλ²κΉ μ μ΄λ €μμ΄ μμ μ μλ€. μ€λ₯κ° λ¬μ λ μ΄λ λΆλΆμ λ©μλμμ μ€λ₯κ° λ¬λμ§ νμΈνκΈ° μ΄λ ΅λ€. π μ°Έκ³ μλ£ λ©μλ 체μ΄λ π‘ κ°μ΄ 보면 μ’μ Post [JavaScript] μλ°μ€ν¬λ¦½νΈλ 'μ΄λ²€νΈ κΈ°λ°', 'λ ΌλΈλ‘νΉ' λ°©μμ μ¬μ©νκ³ 'μ±κΈ μ€λ λ' μΈμ΄μ΄λ€. μλ°μ€ν¬λ¦½νΈλ μ±κΈ μ€λ λ μΈμ΄μ΄λ€. νμ§λ§ μ€μ μ¬μ©μμλ λ§μ μμ μ΄ λμμ μ²λ¦¬λλ λ©ν° μ€λ λμ²λΌ 보μ΄λλ°.. [JavaScript] μ΄λ²€νΈ λ²λΈλ§, μΊ‘μ²λ§, μμμ΄λ? π μ΄λ²€νΈ λ²λΈλ§(Event Bubbling)μ΄λ? νΉμ νλ©΄ μμμμ μ΄λ²€νΈκ° λ°μνμ λ ν΄λΉ μ΄λ²€νΈκ° λ μμμ νλ©΄ μμλ€λ‘ μ λ¬λμ΄ κ°λ νΉμ±μ΄λ€. π μ΄λ²€νΈ μΊ‘μ²λ§(Event Capturing)μ΄λ? μ΄λ²€νΈ λ²λΈλ§κ³Ό λ°λ λ°©ν₯μΌλ‘ μ§νλλ μ΄λ²€νΈ μ ν λ°©μμ΄λ€. π μ΄λ²€νΈ μμ(Event Delegation)μ΄λ? νμ μμμ κ°κ° μ΄λ²€νΈλ₯Ό λΆμ΄μ§ μκ³ μμ μμμμ νμ μμμ μ΄λ²€νΈλ₯Ό μ μ΄νλ λ°©μμ΄λ€. (μμμ μ΄ν΄λ³Έ μ΄λ²€νΈ λ²λΈλ§κ³Ό μΊ‘μ²λ§μ μ΄λ²€νΈ μμμ μν μ μ μ§μμ΄λΌκ³ ν΄λ κ³ΌμΈμ΄ μλλ€. μ΄λ²€νΈ μμμ μ€μ λ°λλΌ μλ°μ€ν¬λ¦½νΈλ‘ μΉκ³Ό μ±μ ꡬνν λ μμ£Ό μ¬μ©νλ μ½λ© ν¨ν΄μ΄λ€.) μ₯μ μ½λκ° μ§§μμ§κ³ λ©λͺ¨λ¦¬κ° μ μ½λλ€. 무λΆλ³ν μ΄λ²€νΈ λ±λ‘μΌλ‘ μΈν λ©λͺ¨λ¦¬ λμλ₯Ό λ°©μ§ν μ .. [Web] μΉ νμ€, μΉ μ κ·Όμ±, μΉ νΈνμ±μ΄λ? π μΉ νμ€ (Web Standards) μ΄λ? μΉ νμ€μ΄λ 'μΉμμ νμ€μ μΌλ‘ μ¬μ©λλ κΈ°μ μ΄λ κ·μΉ'μ μλ―Ένλ€. νμ€ν λ¨μ²΄μΈ W3Cκ° κΆκ³ ν νμ€μμ λ°λΌ μΉ μ¬μ΄νΈλ₯Ό μμ±ν λ μ΄μ©νλ HTML, CSS, JavaScript λ±μ λν κ·μ μ΄ λ΄κ²¨ μλ€. μΉ νμ€μ κΆκ·Ήμ μΈ λͺ©μ μ μΉμ¬μ΄νΈμ μ μν μ¬μ©μκ° μ΄λ ν μ΄μ체μ λ λΈλΌμ°μ λ₯Ό μ¬μ©νλλΌλ λμΌν κ²°κ³Όλ₯Ό 보μ΄κ² νλ κ²μ΄λ€. π μΉ μ κ·Όμ± (Web Accessibility) μ΄λ? μΉ μ κ·Όμ±μ΄λ μ₯μ μΈ, κ³ λ Ήμ λ± λͺ¨λ μ¬μ©μκ° μ΄λ ν κΈ°μ μ΄λ νκ²½μμλ μ λ¬Έμ μΈ λ₯λ ₯ μμ΄ μΉ μ¬μ΄νΈμμ μ 곡νλ λͺ¨λ μ 보λ₯Ό λλ±νκ² μ κ·Όνκ³ μ΄ν΄ν μ μλ κΆλ¦¬λ₯Ό μλ―Ένλ€. μΉ νμ€μ μ€μν¨μΌλ‘μ¨ λ€μν λΈλΌμ°μ νκ²½μ λμμ΄ κ°λ₯νλ©° ν΄λν°, PDA.. [Web] λ°μν μΉμ΄λ? / λ°μν vs μ μν π λ°μν μΉ (Responsive Web) μ΄λ? μμλλ‘ PC - Tablet - Mobile νλ©΄ λ°μν μΉμ΄λ κ°μ’ λλ°μ΄μ€ λλ λͺ¨λν° ν΄μλμ λ°λΌ 컨ν μΈ λ€μ μ¬μ΄μ¦, λ μ΄μμ λ±μ΄ μ λμ μΌλ‘ λ°λλ μΉμ λ§νλ€. μΌλ°μ μΌλ‘ float, flex, % λ±μ μ¬μ©νμ¬ μ λμ μΌλ‘ λ°μν μ μλλ‘ νλ€. 1 2 3 4 5 @media screen and (max-width: 767px){ .container{ width: 50%; } } Colored by Color Scripter cs λ―Έλμ΄ μΏΌλ¦¬λ₯Ό μ¬μ©νμ¬ λλ°μ΄μ€λ₯Ό μ§μ νμ¬ νλ©΄ ν¬κΈ°μ λ°λΌ λ°λλ μΉμ μ μνλ€. π λ°μν μΉ (Responsive Web) vs μ μν μΉ (Adaptive Web) μ°¨μ΄μ λ°μν μΉμ λλ°μ΄μ€μ λ°λΌ νλ©΄.. μ΄μ 1 2 3 4 λ€μ