λͺ¨λμ μ¬μ©νλ©΄ μκΈ°λ μ΄μ
λͺ¨λν νλ‘κ·Έλλ°μ μ¬μ©νλ©΄ λ€μκ³Ό κ°μ λ€μν μ΄μ μ μ»μ μ μμ΅λλ€.
1. ν λ²λ§ μ€νλλ€.
κΈ°μ‘΄ μ€ν¬λ¦½νΈλ DOMμ μΆκ°λ λλ§λ€ μ€νλλ λ°λ©΄μ λͺ¨λ μ€ν¬λ¦½νΈλ ν λ²λ§ μ€ν λ©λλ€. μλ°μ€ν¬λ¦½νΈ λͺ¨λμ μ¬μ©νλ©΄ μμ‘΄μ± νΈλ¦¬μ κ°μ₯ λ΄λΆμ μμΉν λͺ¨λμ΄ λ¨Όμ μ€νλ©λλ€. κ°μ₯ λ΄λΆμ μμΉν λͺ¨λμ΄ λ¨Όμ νκ°λκ³ μ¬κΈ°μ μμ‘΄νλ λͺ¨λμ μ κ·Ό ν μ μλ€λ κ²μ΄ μ΄μ μ
λλ€.
2. μλμΌλ‘ μ§μ° λ‘λλλ€.
μ¦μ λ‘λλμ§ μκΈ° μν΄ λ€λ₯Έ μ€ν¬λ¦½νΈ νμΌμ deferμμ±μ λΆμ¬μΌ νμ§λ§, λͺ¨λμ μλμΌλ‘ μ§μ°λμ΄ λ‘λλ©λλ€.
3. μ μ§λ³΄μμ μ¬μ¬μ©μ΄ μ½λ€.
λͺ¨λμ λ€λ₯Έ λͺ¨λμ μν₯μ μ£Όμ§ μκ³ λ
립μ μΌλ‘ μ€νλ μ μλ μ½λ μ‘°κ°μΌλ‘ κ΄λ¦¬λ©λλ€. μ΄λ₯Ό ν΅ν΄ μ¬λ¬ λ€λ₯Έ ν¨μμμ λμΌν μ½λλ₯Ό μ¬μ¬μ©ν μ μμ΅λλ€.
4. λ€μμ€νμ΄μ€λ₯Ό μ 곡νλ€.
λͺ¨λμ κ΄λ ¨ λ³μμ μμλ₯Ό μν κ°λ³ 곡κ°μ μμ±νμ¬ κΈλ‘λ² λ€μμ€νμ΄μ€λ₯Ό μ€μΌμν€μ§ μκ³ λͺ¨λ μ°Έμ‘°λ₯Ό ν΅ν΄ μ¬μ©ν μ μκ² ν΄μ€λλ€.
5. μ¬μ©νμ§ μλ μ½λλ₯Ό μ κ±°νλ€.
λͺ¨λμ΄ λμ
λκΈ° μ μλ μ¬μ©νμ§ μλ μ½λλ₯Ό μλμΌλ‘ μ κ±°ν΄μΌ νμ΅λλ€.
λμ μΌλ‘ λͺ¨λ κ°μ Έμ€κΈ°
λͺ¨λμ μ΄κΈ°μ λͺ¨λ 미리 λ‘λνκΈ° 보λ€λ νμν μμ μλ§ λ‘λνλ κ²μ΄ λ μ΄λ‘μΈ λκ° μμ΅λλ€. μ§μ°λ‘λ©(Lazy-loading)μ μ¬μ©νλ©΄ νμν μμ μ λ‘λν μ μμ΅λλ€. μλ₯Ό λ€μ΄ μ¬μ©μκ° λ§ν¬λ λ²νΌμ ν΄λ¦ν λ λ‘λνκ² λ§λ€ μ μμ΄ μ΄κΈ° λ‘λ© μκ°μ μ€μΌ μ μμ΅λλ€. μ΄κ² λ°λ‘ λμ κ°μ Έμ€κΈ°(dynamic import)κ° μ겨λ μ΄μ μ
λλ€...
λμ κ°μ μ€κΈ°λ ν¨μμ λΉμ·ν μλ‘μ΄ ννμ κ°μ Έμ€κΈ° μ
λλ€. import(url)λ μμ²λ λͺ¨λμ λ€μμ€νμ΄μ€ κ°μ²΄μ λν νλ‘λ―Έμ€ νλ‘λ―Έμ€ κ°μ²΄λ₯Ό λ°ν ν©λλ€. μ΄ νλ‘λ―Έμ€ κ°μ²΄λ λͺ¨λ μ체μ λͺ¨λ λͺ¨λ μμ‘΄μ±μ κ°μ Έμ¨ ν, μΈμ€ν΄μ€ν νκ³ νκ°ν λ€μ λ§λ€μ΄ μ§λλ€. λ€μμ λμ κ°μ Έμ€κΈ°λ₯Ό μ¬μ©νλ cakeFatoryμ λν μμ μ
λλ€.
form.addEventListener("sumit", e => { e.preventDefault(); import("/modules/cakeFatory.js) .then((module) => { //κ°μ Έμ¨ λͺ¨λ μ¬μ©νκΈ° module.oven.makeCupcake("sprinkles"); module.oven.makeMuffin("large"); }) })
λμ κ°μ Έμ€κΈ°λ awitμ ν¨κ» μ¬μ©ν μ μμ΅λλ€.
let module = awit import("/modules/cakeFactory.js");
λμ κ°μ Έμ€κΈ°λ₯Ό μ¬μ©νλ©΄ λͺ¨λμ΄ μ¬μ©λ λλ§ λ€μ΄λ‘λλκ³ μ€νλ©λλ€. μ¬μ©μ μνΈμμ©μ λ°μνκ±°λ νλ©΄μ 보μ΄λ©΄ μ€ννκΈ° λ± μμ£Ό μ¬μ©λλ ν¨ν΄μ λμ κ°μ Έμ€κΈ°λ₯Ό ν΅ν΄ λ°λλΌ μλ°μ€ν¬λ¦½νΈμμλ μ½κ² ꡬνν μ μμ΅λλ€.
μ¬μ©μ μνΈμμ©μ λ°λΌ κ°μ Έμ€κΈ°
μΌλΆ κΈ°λ₯μ κ²½μ° μ¬μ©μκ° μνΈμμ©ν λλ§ νμν μλ μμ΅λλ€. μ±ν
μ°½μ΄λ λ€μ΄μΌλ‘κ·Έ, λΉλμ€ λ±μ΄ λνμ μΈ μμμ
λλ€. μ΄λ° κΈ°λ₯μ νμ΄μ§ λ‘λ μμ μ νμν κ²μ΄ μλλΌ μ¬μ©μκ° μ»΄ν¬λνΈλ₯Ό ν΄λ¦νλ λ± μνΈμμ©μ λ°λΌ λ‘λλλ κ²μ΄ μ’μ΅λλ€. λμ κ°μ Έμ€κΈ°λ₯Ό νμ©νλ©΄ μ€νν λ€μμ λ°λΌ μ€λ ν¨μλ₯Ό ν΅ν΄ μνλ κΈ°λ₯μ μ¬μ©ν μ μμ΅λλ€.
λ€μ μμλ lodash.sortby λͺ¨λμ λμ μΌλ‘ λ‘λνμ¬ μ λ ¬ κΈ°λ₯μ ꡬννλ μ½λμ
λλ€.
const btn = document.querySelector('button'); e.preventDefault(); import('lodash.sortBy') .then(module => module.default) .then(sortInput()) //use the imported dependency .catch(err => { console.log(err )});
REFERENCES : μλ°μ€ν¬λ¦½νΈ + 리μ‘νΈ λμμΈ ν¨ν΄