π Client Side Rendering
CSR
μ react
, vue
λ±μ SPA(Single Page Application)
μμ μ°μ΄λ κΈ°λ²μΌλ‘, ν΄λΌμ΄μΈνΈ μΈ‘μμ νλ©΄μ ꡬμ±νκ³ λ λλ§μ μ§ννλ€.
μ΄λ° μ¬μ©μ κ²½νμ΄ μ’μ§ μλ€. π₯
- ν΄λΌμ΄μΈνΈ μΈ‘μμ JS λ²λ€ νμΌμ λ€μ΄ λ°κ³ , λ°μ΄ν°κ° λ΄κΈ΄ html νμΌμ ꡬμ±νμ¬ λ λλ§νλ€.
- κ·Έλ¬λ©΄ JS λ²λ€ νμΌμ λ€ λ€μ΄λ°κΈ° μ κΉμ§λ λ°μ΄ν°κ° μλ λΉ html νμΌμ΄ λ λλ§λμ΄ μ¬μ©μλ λΉ νλ©΄μ λ³΄κ² λλ€.
- JS λ²λ€ νμΌμ λ€μ΄λ°λ μκ°μ΄ μ€λ 걸릴μλ‘ μ¬μ©μ κ²½νμ΄ λλΉ μ§λ€.
- νμ§λ§
code splitting
μΌλ‘ μ΄λ μ λ ν΄κ²°μ΄ κ°λ₯νλ€.
κ²μμμ§μ΅μ ν (SEO)μ μ·¨μ½νλ€. π
- κ²μμμ§μ html νμΌμ λ°νμΌλ‘ μ΄ μ¬μ΄νΈκ° κ²μ κ²°κ³Όμ μλ§μ μ¬μ΄νΈμΈμ§ νλ¨νμ¬ κ²μκ²°κ³Όμ 보μ¬μ€λ€.
- νμ§λ§ CSRλ₯Ό μ¬μ©νλ μ ν리μΌμ΄μ
μ μ΄κΈ° html νμΌμλ λ°μ΄ν°κ° μλ€.
- κ·Έλμ μλ°μ€ν¬λ¦½νΈλ₯Ό μ€ννμ§ μλ μΌλ° κ²μμμ§μ μ ν리μΌμ΄μ
μ μ 보λ₯Ό μ λλ‘ μμ§ν μ μμ΄ κ²μκ²°κ³Όμ μ λνλμ§ μμ μ μλ€.
μλ² λΆνλ₯Ό μ€μΌ μ μλ€. π€―
- ν΄λΌμ΄μΈνΈ μΈ‘μμ λ λλ§μ μ§ννκ³ μλ²λ‘λΆν°λ νμν λ°μ΄ν°λ§ κ°μ Έμ€κ³ κ°±μ νλ©΄ λκΈ° λλ¬Έμ μλ² λΆνλ₯Ό μ€μΌ μ μλ€.
π Server Side Rendering
SSR
μ μλ² μΈ‘μμ λ°μ΄ν°κ° λ΄κΈ΄ html νμΌμ ꡬμ±νκ³ λΈλΌμ°μ μΈ‘μ μ λ¬νμ¬ λ λλ§νλ λ°©λ²μ΄λ€.
μ΄λ° μ¬μ©μ κ²½νμ΄ μ’λ€. π₯
- JS λ²λ€ νμΌμ΄ λ€ λ€μ΄λ°κΈ° μ μλ html μμ μ¬μ©μκ° λ³Ό μ μλ μ½ν
μΈ κ° μκΈ° λλ¬Έμ μ¬μ©μ κ²½νμ΄ ν₯μλλ€.
κ²μμμ§μ΅μ ν (SEO)μ μ’λ€. π
- μλ² μΈ‘μμ λ°μ΄ν°κ° λ΄κΈ΄ html νμΌμ λ°ννκΈ° λλ¬Έμ κ²μ μμ§μ΄ μ ν리μΌμ΄μ
μ νμ΄μ§ μ 보λ₯Ό μν νκ² μμ§ν μ μλ€.
μλ² λΆνκ° μ¬νλ€. π€―
- ν΄λΌμ΄μΈνΈκ° νμ΄μ§λ₯Ό μ΄λνκ±°λ, ν΄λ¦μΌλ‘ μΈν λ€λ₯Έ μμ²μ΄ μκΈΈ λλ§λ€ μλ² μΈ‘μμ λ€μ html νμΌμ ꡬμ±νμ¬ λ°ννλ€.
- νλ©΄μμ λ°λμ§ μμλ λλ λΆλΆλ 리λ λλ§λλ€.
ππ» NextJSμ μ₯μ
Next.js
λ React
μμ SSR
μ μ½κ² ꡬνν μ μλλ‘ λμμ£Όλ νλ μμν¬μ΄λ€.
SSR
λ°©μμΌλ‘ pre-renderingνλ€.
- μ¬μ©μ μμ² μ Server Sideμμ html ꡬμ±νμ¬ λΈλΌμ°μ μΈ‘μ μ λ¬νμ¬
pre-rendering
- μ΄ν JS νμΌμ΄ λ‘λλμ΄ μλ°μ€ν¬λ¦½νΈ μ½λκ° μ μ©λλ€. (μ΄λ μλ°μ€ν¬λ¦½νΈ μ½λκ° μ μ©λλ κ³Όμ μ Hydrationμ΄λΌκ³ νκ³
Hydration
μ κ±°μ³ interactive
ν νμ΄μ§κ° μμ±λλ€.)
π μ΄λ° μ¬μ©μ κ²½νμ΄ ν₯μλκ³ SEOμ μ’λ€.
μ¬μ©μκ° νμ΄μ§μ μνΈμμ©νλ©° λ€λ₯Έ νμ΄μ§λ‘ μ΄λν κ²½μ° μ΄λνλ €λ νμ΄μ§λ CSR
λ°©μμΌλ‘ λ λλ§νλ€.
- NextJSμμλ
Link
μ»΄ν¬λνΈ νΉμ router.push()
λ₯Ό ν΅ν΄ νμ΄μ§ μ΄λμ νλλ° μ΄ λμ client side navigationμ μ 곡νλ€.
- μ¦, νμ΄μ§ μ΄λμ΄ ν΄λΌμ΄μΈνΈ μΈ‘ μλ°μ€ν¬λ¦½νΈλ₯Ό ν΅ν΄ μ΄λ£¨μ΄μ§λ€.
- Client-Side Navigation
π μλ²μ λΆνλ₯Ό μ€μΌ μ μλ€.
β£οΈ SSR
κ³Ό CSR
λ₯Ό ν¨κ» μ¬μ©νμ¬ λμ μ₯μ μ μ΄λ¦¬κ³ λ¨μ μ 보μνλ€.
NextJS
μμλ Automatic Code Splitting
μ΄ μ΄λ£¨μ΄μ§λ€.
import
λ₯Ό λΆμνμ¬ λ‘λ©λλ νμ΄μ§κ° κΌ νμλ‘ νλ JS
νμΌλ§ λ‘λλλ€.
- JSλ₯Ό ν¬ν¨ν νλ©΄μ΄ λΉ¨λ¦¬ ꡬμ±λμ΄ μ¬μ©μ κ²½νμ΄ μ’λ€.
- λ€λ§ μ λ° μ΄μ μ¬μ©λλ JS νμΌμ
main bundle
μ ν¬ν¨λλ€.