λΉκ·Ό ν ν¬ λ°μ μμμ λ³΄κ³ λ΄μ© μμ£Όλ‘ μ 리νμμ΅λλ€.
π HTML
- μΉνμ΄μ§μμ κ°μ₯ μ€μν μμλ λΈλΌμ°μ μ νμλλ λ΄μ©μ κ²°μ νλ HTMLμ΄λ€.
- μ¬μ©μκ° λ‘컬μμ HTML νμΌμ μ κ·Όνλ©΄ λΈλΌμ°μ κ° μ§μ μ΄ μ μμ§λ§ 리λͺ¨νΈ μλ²μ μλ HTMLμ μ κ·ΌνκΈ° μν΄μλ 리λͺ¨νΈ URLλ‘ μ κ·Όν΄μΌ νλ€. (* 리λͺ¨νΈ URL : μΈλΆμ μμΉν HTMLμ κ°λ¦¬ν€λ κ²½λ‘)
- λ‘컬μμλ νμΌ νλ‘ν μ½μ ν΅ν΄ HTMLμ μμ², 리λͺ¨νΈμμ μ κ·Όν λλ HTTP νλ‘ν μ½μ μ¬μ©νμ¬ μμ²νλ€.
(*νλ‘ν μ½: μ»΄ν¨ν°μ μ»΄ν¨ν° μ¬μ΄, λλ ν μ₯μΉμ λ€λ₯Έ μ₯μΉ μ¬μ΄μμ λ°μ΄ν°λ₯Ό μνν μ£Όκ³ λ°κΈ° μνμ¬ μ½μν μ¬λ¬ κ°μ§ κ·μ½)
π¦ λ°°ν¬μ μ μ λ° μ±κ³΅μ μΈ λ°°ν¬μ 쑰건
λ°°ν¬λ?
1. μ¬μ©μμ κ°λ°μκ° λ§λλ μ§μ .
2. HTML μμΉλ₯Ό νμνκ³ HTMLμ μμ²νκ³ HTMLμ€νμ΄ λμμ 보μ₯νλ κ².
μ±κ³΅μ μΈ λ°°ν¬λ?
λ‘컬 νμΌ μμ± ν λΈλΌμ°μ λ₯Ό ν΅ν΄ νμΈν μ μλ μμ μΈ κ°μ§ λμμ΄ μΆ©μ‘±λμ΄μΌ νλ€.
β μ μ μΉμ¬μ΄νΈμ λμ μΉμ¬μ΄νΈμ λ°°ν¬ νλ«νΌ κ΅¬μ± μμ
μ μ μΉμ¬μ΄νΈ
- λ΄μ©μ΄ λ³νμ§ μλ HTML μ½ν μΈ .
- 리λͺ¨νΈ URLμ νμ
νκ³ HTTP GET μμ²μ ν΅ν΄ HTMLμ λ°μμ€λ λ°©μμΌλ‘ μλνλ€.
- μΉμλ²κ° λΈλΌμ°μ κ° λ³΄λΈ HTTP GET μμ²μ μ²λ¦¬ν¨
μ μ μΉμ¬μ΄νΈλ μΉ μλ²λ§μΌλ‘ λ°°ν¬ νλ«νΌμ ꡬμΆν μ μλ€. (λ³νλ λ°μ΄ν°κ° μμ)
λμ μΉμ¬μ΄νΈ
- λμ μΉμ¬μ΄νΈλ μ¬μ©μλ§λ€ κ°μΈνλ μ½ν μΈ λ₯Ό μ 곡νκΈ° μν΄ λμ μΈ μ²λ¦¬κ° νμνλ€.
- HTTP μμ²μ λ°μμ λμ μΈ μμ μ μ²λ¦¬νλ μΉ μ ν리μΌμ΄μ μλ²κ° μΆκ°λ¨.
- μΉ μ ν리μΌμ΄μ μλ²λ μΉ μλ²μ νλ ₯νμ¬ HTMLμ λμ μΌλ‘ μμ νκ³ μλ΅ν¨.
λμ μΉμ¬μ΄νΈμμμ λ°°ν¬ νλ«νΌμ λ¨μν μΉ μλ²λΏλ§ μλλΌ, HTMLμ λμ μΌλ‘ μ μ΄ν μ μλ μΉ μ ν리μΌμ΄μ μλ²κ° ν¨κ» μμ΄μΌ νλ€.
β SPA λμ λ°©μ λ° λ°°ν¬ νλ«νΌ κ΅¬μ± μμ
1. μΉ μ ν리μΌμ΄μ μ νκ³
HTMLμ μλ‘ λ°μμΌ νκΈ° λλ¬Έμ UI/UX μΈ‘λ©΄μμ κ³μ μλ‘κ³ μΉ¨μ΄ λ°μνκ² λλ€.
νλ©΄ νμμ λ°μ΄ν° μ²λ¦¬μ κ°κ²°ν©μ΄ λλ€.
2. AJAX κΈ°μ λ±μ₯
μλ‘κ³ μΉ¨ μμ΄ λ°μ΄ν°λ₯Ό λ°μ μ μλ λ°©λ²μ μ 곡νλ€.
μΉ μλ²μμ HTMLμ λ°μμ¨ ν, λΈλΌμ°μ λ λ°μ΄ν° μ λ¬μ μν΄ λ λ€λ₯Έ μΉ μλ²μ μμ²μ λ³΄λ΄ λ°μ΄ν°λ₯Ό λ°μ μ μλ κ΅¬μ‘°λ‘ λ°μ νκ² λλ€.
π₯ AJAX λ±μ₯μΌλ‘ SPAμ΄ λΆμνκ² λμμΌλ©°, HTML νμ΄μ§λ JSμ CSSλ₯Ό λ°μμ€λ ν΅λ‘λ‘ λμνκ² λλ€.
JSλ μ¬μ©μμμ μνΈμμ©μ μ μ΄νκ³ , μ ν리μΌμ΄μ μ κΈ°λ₯μ ꡬννλ©΄μ CSSμ€νμΌλ μ μ©νκ² λλλ° λΉλ λꡬλ₯Ό ν΅ν΄ HTMLμ JSμ CSSλ₯Ό ν΅ν©νκ² λλ€.
SPA λ°°ν¬ νλ«νΌ μꡬμ¬ν
- JS, CSS, AJAX μλ΅μ μ²λ¦¬νλ μΉ μλ²λ₯Ό νμλ‘ νλ€.
- λ€λ§ SPAμμ μλΈ ν¨μ€μ μ²λ¦¬κ° μ΄λ €μμ§κΈ° λλ¬Έμ 404 not found λ°μ μ index.html μλ΅λ νμνλ€.
β SPA μ±λ₯ μ΅μ νλ₯Ό μν μΊμ κ΄λ¦¬
SPAλ μ¬μ©μκ° μ²« νλ©΄μ 보기 μν λλμ HTML, JS, CSSμμ²μ νκΈ° λλ¬Έμ μ±λ₯ μ°λ €κ° μλ€.
- SPA ꡬ쑰μμλ JSμ CSSκ° μ¬μ©μμ μΈν°λμ μ μ μ΄νκ³ , HTMLμ ν΅λ‘ μν μ νμ¬ νμν λ°μ΄ν°κ° λμ μΌλ‘ λ‘λλλλ°, μ΄ κ³Όμ μμ 볡μ‘ν HTTP μμ²μ΄ λ°μνμ¬ μν°ν΄ νμμ΄ λ°μν μ μκ² λ¨.
π€ κ·ΈλΌ λ°°ν¬ νλ«νΌμμ μ΄λ»κ² μ±λ₯μ μ΅μ νν μ μμκΉ?
HTTP μμ²μ ν΅ν΄ μλ΅ ν€λλ₯Ό μ€μ νμ¬, μ±λ₯μ μ΅μ νν μ μλ€.
μλ μ΄λ―Έμ§μ²λΌ μ¬λ¬ μλ΅ν€λλ€μ΄ μλλ° κ·Έ μ€ Cache-Controlλ₯Ό μ¬μ©ν΄μ μ±λ₯μ μ΅μ νν μ μμ.
π€ Cache-Controlλ‘ μ±λ₯ μ΅μ νκΈ° μν λ°©λ²μ?
Cache-Controlλ κΈ°μ‘΄μ λ°μλ HTMLμ΄λ JS, CSSλ₯Ό μ¬νμ©νλ μΌμ’ μ μΊμ± μ μ± μ λ»νλλ°
μλ₯Ό λ€μ΄ max-ageλ₯Ό 60μ΄λ‘ μ€μ νλ©΄ 60μ΄κ° μΉ μλ²λ₯Ό ν΅νμ§ μκ³ λ°λ‘ HTMLμ λ°μμ¬ μ μμ΄ μ±λ₯μ΄ ν₯μλλ€.
JSμμλ λμΌνκ² μ μ©ν μ μλλ° max-age=600μΌλ‘ μ€μ νλ©΄ 600μ΄ λμ μΊμ λλ€.
π€ κ·ΈλΌ μλ‘ λ°°ν¬λ₯Ό νμ λ max-age κ°μ΄ μ€μ λμ΄ μμΌλ©΄ λ§λ£λ λκΉμ§ κΈ°λ€λ €μΌ νλκ°?
- HTML νμΌμ max-ageλ₯Ό μ€μ νλ©΄ μλ‘μ΄ λ°°ν¬ μμλ λΈλΌμ°μ κ° μΊμλ HTMLμ μ¬μ©νμ¬ λ³κ²½ μ¬νμ΄ μ¬μ©μμκ² μ¦μ λ°μλμ§ μμ μ μλ€.
- λ°λΌμ λ³΄ν΅ HTML νμΌμλ μΊμ±μ μ ν (no-store) νκ³ , JS ν΄μλ₯Ό μ¬μ©ν μΊμ± μ λ΅μ μ μ©νλ κ²μ΄ μΌλ°μ μ΄λ€.
- JSμ νμΌλͺ
μ hashλ‘ κ΅¬λΆλλλ°, μΊμ± κ°μ λΆλ¬μ€λ ν€λ‘ νμΌλͺ
μ μ¬μ©νκΈ° λλ¬Έμ νμΌλͺ
μ΄ λ€λ₯΄λ©΄ μΊμ±μΌλ‘λΆν° μμ λ‘μμ§.
- νμΌ λ΄μ©μ΄ λ³κ²½λμ§ μμΌλ©΄ ν΄μκ° λμΌνλ―λ‘ λΈλΌμ°μ λ μΊμ λ νμΌμ μ¬μ©νμ¬ λ‘λ© μλλ₯Ό ν₯μν¨.
- νμΌ λ΄μ©μ΄ λ³κ²½λλ©΄ ν΄μκ° λ³κ²½λμ΄ λΈλΌμ°μ κ° μλ‘μ΄ νμΌλ‘ μΈμνκ³ μλ²μμ μ΅μ νμΌμ λ°μμ΄
- JSμ νμΌλͺ
μ hashλ‘ κ΅¬λΆλλλ°, μΊμ± κ°μ λΆλ¬μ€λ ν€λ‘ νμΌλͺ
μ μ¬μ©νκΈ° λλ¬Έμ νμΌλͺ
μ΄ λ€λ₯΄λ©΄ μΊμ±μΌλ‘λΆν° μμ λ‘μμ§.
μ΄μ λ°°ν¬ νλ«νΌμμλ λ°°ν¬ λ²μ μ΄ μμμ§λ§ λ°°ν¬ λ²μ μ νμλ‘ νκ² λλ€.
μλ₯Ό λ€μ΄ μλ‘μ΄ λ°°ν¬ μ μ΄μ λ²μ μ HTMLμ΄ μλ‘μ΄ JS νμΌμ λ‘λνλ € νλ©΄ 404 μλ¬κ° λ°μν μ μμ.
ex) index.foo.jsμμ index.bar.jsλ‘ λ³κ²½λμμ λ, HTMLμ΄ μ΄μ λ²μ μ JSλ₯Ό λ‘λνλ©΄ νμΌμ μ°Ύμ§ λͺ»ν¨.
κ·ΈλΌ μμ μ μν SPA λ°°ν¬ νλ«νΌμμ μ±λ₯ μ΅μ νκ° μΆκ°λ λ°°ν¬ νλ«νΌμ΄ λκΈ° μν΄μ λ²μ μ μ± μ΄ μΆκ°λλ€.
SPA λ°°ν¬ νλ«νΌ μꡬμ¬ν
- [κΈ°μ‘΄] JS, CSS, AJAX μλ΅μ μ²λ¦¬νλ μΉ μλ²λ₯Ό νμλ‘ νλ€.
- [κΈ°μ‘΄] λ€λ§ SPAμμ μλΈ ν¨μ€μ μ²λ¦¬κ° μ΄λ €μμ§κΈ° λλ¬Έμ 404 not found λ°μ μ index.html μλ΅λ νμνλ€.
- [μΆκ°] Cache-Control μ¬μ© μ, μΊμ± μ μ± μ λ°λ₯Έ λ²μ μ μ± μ΄ νμνλ€.
π₯ CDN λμ
CDNμ νμ©νμ¬ λ°°ν¬ νλ«νΌμ λμ± κ°μ ν μ μλ€.
- CDNμ HTMLμλ΅μ λ‘컬 μλ²κ° μλ 물리μ μΌλ‘ λ κ°κΉμ΄ μλ²μμ λ°μμ€λ λ°©μμΌλ‘, μλ΅ μλλ₯Ό μ΅μ νν μ μλ€.
- μμ²μ΄ νμν λ μΊμλ μλ΅μ μ 곡ν¨μΌλ‘μ¨ HTTP μλ΅ μλλ₯Ό κ°μ νλ μν μ νλ€.
- μλ‘μ΄ λ°°ν¬ μ CDN νΌμ§λ₯Ό ν΅ν΄ μΊμ±μ 무ν¨νν μ μλ€.
++ CDNμ SPAλΏλ§ μλλΌ μ μ μΉμ¬μ΄νΈμ μ±λ₯ μ΅μ νμλ μ μ© κ°λ₯νλ€.
β κ²°λ‘
- 볡μ‘ν΄ λ³΄μ΄λ κ°λ λ€λ κΈ°λ³Έμ μΈ μμλ€μ μ‘°ν©μ ν΅ν΄ μΆ©λΆν ꡬννκ³ μ΄ν΄ν μ μλ€.
- νλ‘ νΈμλ λ°°ν¬ νλ«νΌμ λ λλ§ μ΄νλ§ λ³΄λ©΄ λ¨μν΄ λ³΄μΌ μ μμ§λ§, λ λλ§ μ΄μ μ μΈκ³, μ¦ μΉ μμ€ν μ κ³ λ €νλ©΄ κ·Έ μ€μμ±μ λ§€μ° ν¬λ€.
'π WIL' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Polyfillμ΄λ? (1) | 2024.12.08 |
---|---|
π FSD (Feature-Slided Design) (1) | 2024.12.01 |
λμΌν μ»΄ν¬λνΈλ₯Ό μ¬μ¬μ©νλ©΄μ λ 립μ μΈ μνλ₯Ό κ΄λ¦¬νλ λ°©λ² (2) | 2024.11.17 |
CustomEvent μ¬μ©ν΄μ λ Έλ μ°κ²°νκΈ° (3) | 2024.11.10 |
π€¨ lingui (1) | 2024.11.03 |