SSR
Last updated
Last updated
리μ‘νΈλ‘ κ°λ°ν΄μ€λ©΄μ λ³΄ν΅ λ°±μλλ‘ requestμμ²μ 보λ΄μ jsonμ λ°μμ€λ μμ²μ΄ λλΆλΆμ΄μλ€. κ·Έλ°λ° λΈλ‘κ·Έ νμ΄μ§ κ°μ΄ μ μ κ° μμ±νκ³ λ³΄λ νμ΄μ§λ application/json response νμ μΌλ‘ μλνλμ§ κΆκΈν΄μ μ°Ύμλ³΄κ² λμλ€. μ°Ύμ보λ μ€ application/json νμ μΌλ‘ ν΅μ νλ κ³³κ³Ό text/htmlλ‘ ν΅μ νλ κ³³μ΄ μμλ€.
μ΄λ κ² λ μ’ λ₯μ νμ μ μ¬μ©νλ€λ κ²μ μκ² λ€. 첫λ²μ§Έ μ¬μ§μ²λΌ jsonμΌλ‘ ν΅μ ν κ²½μ°μλ ν΄λΌμ΄μΈνΈ μΈ‘μμ μλ²μ jsonμ μμ²ν ν jsonμλ΅μ λ°ννλ©΄ κ·Έ λ ν΄λΌμ΄μΈνΈμΈ‘μμ λ λλ§νκ²λλ€. λ΄κ° μ§κΈκΉμ§ ν΄μλ 리μ‘νΈλ csrμ΄λ―λ‘ μ΄λ° λ°©μμ μ¬μ©νλ€.
κ·Έλ°λ° text/htmlμ κ²½μ° previewλ₯Ό 보면 μ μ λ€μ΄ 보λ νμ΄μ§μ λκ°μ νμ΄μ§κ° λ λλ§λμλ€.
μλ λ€μ΄μ΄κ·Έλ¨μ 보μ
μ΄ λ€μ΄μ΄κ·Έλ¨μΌλ‘ 보μνλ ssrμ jsλ° fetchμμ²μ λμ€μΌλ‘ 미루λ κ²μ μ μ μλ€. κ·Έλ°λ° μ΄λ»κ² 리μ‘νΈ μ½λλ₯Ό html, cssλ§ λ¨Όμ μλ²μμ λ λλ§ν΄μ λ΄λ €μ£Όμ΄μΌ ν κΉ?
μ¬μ€ μ΄λ csrλ‘ μ½λ©νλ 리μ‘νΈλ‘λ ꡬννκΈ°κ° λ²κ±°λ‘μ΄ λΆλΆμ΄ λ§λ€. μλ²μμ λ λλ§νλλ‘ μ€μ ν΄μΌν κ²μ΄ λ§κ³ κΈ°μ μ μΌλ‘λ jsλ§ λ°λ‘ λΆλ¦¬νλ κ²μ΄ μ½μ§ μκΈ° λλ¬Έμ΄λ€. νμ§λ§ μ΄λ₯Ό ν΄κ²°ν μ μλλ‘ λ¦¬μ‘νΈμμ μλ² μ¬μ΄λ λ λλ§μ μν΄ κΆμ₯νλ λ°©λ²μ΄ μλ€. λ°λ‘ next.jsλΌλ νλ μμν¬μ΄λ€. μ΄ νλ μμν¬λ μ¬μ©νλ κ²λ§μΌλ‘λ ssrμ κ°λ₯νκ² ν΄μ€λ€. μ¦ μλ²μμ 리μ‘νΈ μ½λλ₯Ό μ€νν΄μ λ λλ§ν΄μ£Όλ κ²μ΄λ€.
μ΄ νλ μμν¬λ κ°λ°μκ° μ€μ ν΄μΌν λΆλΆλ€μ λ§μ΄ μ€μ¬μ£Όκ³ , κ°λ°μλ 리μ‘νΈ μ½λμλ§ μ§μ€ν μ μκ² ν΄μ€λ€. μ¬μ€μ 리μ‘νΈ μλ² μ¬μ΄λ λ λλ§μ νλ©΄ next.jsλ₯Ό μ΄λ€κ³ 보면 λλ€. μ΄λ―Έ tencent, netflix λ± λ§μ κΈ°μ λ€μ next.jsμ¬μ©μΌλ‘ μΈν΄ κ²μ¦λμλ€. (λ€μ΄λ² λΈλ‘κ·Ένμμλ csrμμ μλ² μ¬μ΄λ λ λλ§μΌλ‘ μ νν λ next.jsνλ μμν¬λ₯Ό μ ννμ§ μμ κ²μ νν νλ€κ³ ν μ λλ λ..)
κ·Έλ λ€λ©΄ λ§μ κΈ°μ λ€μ΄ μ ssrμ μ¬μ©ν κΉ? μλ² μ¬μ΄λ λ λλ§μ ν¨μΌλ‘μ¨ μ»λ μ΄λμ ν¬κ² λ κ°μ§κ° μλ€.
κ²μ μμ§ μ΅μ ν κ²μ μμ§μ μλ°μ€ν¬λ¦½νΈλ₯Ό μ€ννμ§ μκΈ° λλ¬Έμ jsλ κ²μ 쑰건μμ μ μΈλλ€. (λ¬Όλ‘ κ΅¬κΈμ jsλ κ²μνμ§λ§ κ΅¬κΈ μμ ssrμ λ κ°μ°μ μ μ€λ€.) jsλ₯Ό μ€νν΄ λ λλ§νλ csrμ λΉν΄ ssrμ html,cssλ₯Ό λ¨Όμ λ λλ§ν΄ ν΄λΌμ΄μΈνΈμ 보λ΄μ£ΌκΈ° λλ¬Έμ κ²μ μμ§μ μν΄ κ²μλκΈ° μ’μ 쑰건μ΄λ€.
λΉ λ₯Έ 첫 νμ΄μ§ λ λλ§ μ¬μ€ λλ μ΄κ²μ΄ μ μΌ ν° μ₯μ μ΄λΌκ³ μκ°νλ€. csrμ μ¬μ©μμ κΈ°κΈ° μ±λ₯μ μν₯μ λ°κΈ° λλ¬Έμ μ¬μ©μλ§λ€ λ λλ§ μλκ° λ€λ₯Ό μ μκ³ , κΈ°λ³Έμ μΌλ‘ jsλ₯Ό λͺ¨λ λ‘λ©ν μμ μ htmlμ΄ λ‘λ©λκΈ° λλ¬Έμ 첫 νμ΄μ§ λ λλ§μ΄ λ리λ€. λ°λ©΄ ssrμ μ¬μ©μμ νκ²½μ μκ΄ μμ΄ λκ°μ΄ μλ²μμ λ λλ§ν΄μ 보λ΄μ£ΌκΈ° λλ¬Έμ 첫 νμ΄μ§ λ λλ§μ΄ λΉ λ₯΄λ€. κ·Έμ λ°λΌ μ¬μ©μ κ²½νμ΄ μ’μμ§λ κ²μ λΉμ°νλ€.
λ¬Όλ‘ ssrμλ 'μλ² λ λλ§μ λ°λ₯Έ μλ² λΆν'κ°μ λ¨μ μ΄ μκ² μ§λ§ κ·Έλ³΄λ€ μ¬μ©ν¨μΌλ‘μ¨ μ»λ μ΄λμ΄ νμ μμ λ ν΄ν λκΉ μ¬μ©νλ€κ³ μκ°νλ€.
react ssrμ λν΄μ μ μ€λͺ ν΄μ£Όμ μμμ΄ μμΌλ 볡μ΅μ΄ νμνλ©΄ λ€μ 보λλ‘ νμ. λ§ν¬ : https://tv.naver.com/v/16970015#comment_focus
λΈλ£¨ λΌμΈλΆν° λ λ λΌμΈκΉμ§ : componentdidmountλΆν° μμνλ 리μ‘νΈ μ΄κΈ°ν λ° μ΄λ―Έμ§, μΈλΆμ€νμΌμνΈκΉμ§ λΆλ¬μ€λ κ²μ΄ λλκΈ°κΉμ§μ κΈ°κ°
λ λ λΌμΈ μ΄ν : μλΉμ€js λ‘λ© λ°/μ€ν. μλ₯Ό λ€λ©΄ λκΈλμ΄ λ§¨ μλμ μμ΄μ 보μ΄μ§ μλλ° λ λ λΌμΈ μ΄μ μ λμνκ² λ§λ€μ΄μ€ νμλ μμΌλ―λ‘ λ λ λΌμΈ μ΄νλΆν° λ λλ§νλ κ²μ΄λ€. λΈλ£¨ λΌμΈλΆν° λ λλΌμΈκΉμ§μ κΈ°κ°, μ¦ DOMContentLoadedλΆν° loadκΉμ§μ κΈ°κ°μ μ€μ΄κΈ° μν κ²μ΄λ€.
μ΄ responseλ₯Ό 보λ΄μ£ΌκΈ° μν΄μ μλ²μΈ‘μμ ssrμ μ¬μ©ν΄ html+cssλ₯Ό ꡬνν κ²μ΄λ€.
λΈλ£¨ λΌμΈκΉμ§ : λΈλΌμ°μ κ° HTMLμ μ λΆ μ½κ³ DOM νΈλ¦¬λ₯Ό μμ±νκΈ°κΉμ§μ κΈ°κ° (μ΄λ―Έμ§ νμΌμ΄λ μ€νμΌμνΈ λ±μ κΈ°ν μμμ κΈ°λ€λ¦¬μ§ μλλ€.)