Next.jsμμ Three.jsλ vtkjsμ κ°μ κ·Έλν½ λΌμ΄λΈλ¬λ¦¬λ€μ νμ©νλ€ λ³΄λ©΄, μ΄μ© μ μμ΄ κ³μν΄μ μλ°μ€ν¬λ¦½νΈ λλ νμ μ€ν¬λ¦½νΈ νμΌ μ΅μλ¨μ use clientλ₯Ό μ λ ₯νκ² λλ κ²½μ°κ° μμ λ°μνλ€.
Next.jsλ μ무λλ μλ² μ¬μ΄λ λ λλ§(Server-Side Rendering, SSR)μ΄ μ₯μ μΈ νλ μμν¬μ΄λ€ 보λ, use clientλ₯Ό μ°λ©΄ κ·Έ μ₯μ μ ν΄μμν€λ κ² κ°μ μ£μ± κ°μ΄ λ λ€.
κ²°λ‘ λΆν° λ§νμλ©΄ μ£μ± κ°μ λλ νμλ μλ€. "use client"μ μ¬μ©μ μ±λ₯ μΈ‘λ©΄μμ λλ €μ§λ μμΈμ΄ μλλΌ, μ€νλ € μ±λ₯μ μ΅μ ννκΈ° μν λͺ©μ μΌλ‘ λμ λ κΈ°λ₯μ΄λ€. μ΄λ₯Ό ν΅ν΄ κ°λ°μλ μ ν리μΌμ΄μ μ μ±λ₯μ λ μΈλ°νκ² μ‘°μ νκ³ , μ¬μ©μ κ²½νμ κ°μ ν μ μλ€.
Next.jsμμ "use client"λ₯Ό μ¬μ©νλ κ²μ Next.js 13 μ΄μμ λ²μ μμ λμ λ μλ‘μ΄ κΈ°λ₯μΌλ‘, μλ² μ»΄ν¬λνΈμ ν΄λΌμ΄μΈνΈ μ»΄ν¬λνΈλ₯Ό ꡬλΆνκΈ° μν λͺ μμ μΈ λ°©λ²μ΄λ€. μ΄ κ΅¬λΆμ Next.jsμ μλ² μ»΄ν¬λνΈ μν€ν μ²μ μΌλΆλ‘, λ λλ§ μ±λ₯μ μ΅μ ννκ³ ν΄λΌμ΄μΈνΈ μ¬μ΄λμ μλ² μ¬μ΄λμ μ½λ μ€ν μμΉλ₯Ό λ λͺ ννκ² κ΅¬λΆνκΈ° μν΄ λμ λμλ€.
"use client"μ λμ λ°°κ²½
Next.jsλ κΈ°λ³Έμ μΌλ‘ μλ² μ¬μ΄λ λ λλ§(SSR)μ μ§μνλ νλ μμν¬λ€. SSRμ μ΄κΈ° νμ΄μ§ λ‘λ μ μλ²μμ HTMLμ μμ±νκ³ ν΄λΌμ΄μΈνΈλ‘ μ μ‘ν¨μΌλ‘μ¨, μ΄κΈ° λ‘λ© μ±λ₯μ κ°μ νκ³ κ²μ μμ§ μ΅μ ν(SEO)λ₯Ό ν₯μμν¬ μ μλ λ°©λ²μ΄λ€. κ·Έλ¬λ λͺ¨λ μ»΄ν¬λνΈκ° μλ²μμ λ λλ§λ νμλ μμΌλ©°, μΌλΆλ ν΄λΌμ΄μΈνΈ μ¬μ΄λμμλ§ μ€νλμ΄μΌ ν μ μλ€.
"use client" μ¬μ©
- ν΄λΌμ΄μΈνΈ μ»΄ν¬λνΈ: "use client"λ₯Ό νμΌ μλ¨μ μΆκ°ν¨μΌλ‘μ¨, ν΄λΉ μ»΄ν¬λνΈκ° ν΄λΌμ΄μΈνΈ μ¬μ΄λμμλ§ λ λλ§λμ΄μΌ ν¨μ λͺ μμ μΌλ‘ νμνλ€. μ΄λ λΈλΌμ°μ μμλ§ μ¬μ©λλ APIλ μνΈ μμ©μ΄ λ§μ κΈ°λ₯(μ: μ λ ₯ μμ μ²λ¦¬, ν΄λΌμ΄μΈνΈ μ¬μ΄λ λΌμ°ν )μ μ μ©νλ€.
- μλ² μ»΄ν¬λνΈ: "use client"λ₯Ό μ¬μ©νμ§ μλ μ»΄ν¬λνΈλ μλ² μ»΄ν¬λνΈλ‘ κ°μ£Όλλ©°, μ΄λ€μ μλ²μμ λ λλ§λμ΄ μ΄κΈ° νμ΄μ§ λ‘λ μ ν΄λΌμ΄μΈνΈλ‘ μ μ‘λλ€.
μ±λ₯μ μΈ μΈ‘λ©΄
- μ±λ₯ ν₯μ: "use client"λ₯Ό μ¬μ©ν¨μΌλ‘μ¨ κ°λ°μλ μ»΄ν¬λνΈκ° μ€νλμ΄μΌ ν μ μ ν μμΉ(μλ² λλ ν΄λΌμ΄μΈνΈ)λ₯Ό λͺ νν μ§μ ν μ μλ€. μ΄λ λΆνμν μλ°μ€ν¬λ¦½νΈ μ€νμ μ€μ΄κ³ , ν΄λΌμ΄μΈνΈ μ¬μ΄λμ λΆνλ₯Ό μ΅μννμ¬ μ ν리μΌμ΄μ μ μ λ°μ μΈ μ±λ₯μ κ°μ ν μ μλ€.
- λ‘λ© μκ° λ¨μΆ: μλ² μ»΄ν¬λνΈλ μ¬μ©μμκ² λΉ λ₯΄κ² μ½ν μΈ λ₯Ό μ 곡νκΈ° μν΄ μλ²μμ μ¬μ λ λλ§λλ©°, ν΄λΌμ΄μΈνΈ μ»΄ν¬λνΈλ νμν κ²½μ°μλ§ λ‘λλμ΄ μ€νλλ€. μ΄λ νΉν μ΄κΈ° νμ΄μ§ λ‘λ© μκ°μ λ¨μΆμν€λ λ° λμμ΄ λλ€.
μΆκ°μ μΌλ‘, μ΄μ κ΄λ ¨ν SSRκ³Ό CSRμ λν μ₯λ¨μ μ μμ보λλ‘ νκ² λ€.
Next.jsμμ 'use client' λλ ν΄λΌμ΄μΈνΈ μ¬μ΄λ λ λλ§(Client-Side Rendering, CSR)μ μ¬μ©νλ κ²κ³Ό Next.jsμ μ£Όμ μ₯μ μ€ νλμΈ μλ² μ¬μ΄λ λ λλ§(Server-Side Rendering, SSR)μ νμ©νλ κ² μ¬μ΄μλ μ€μν μ°¨μ΄κ° μλ€. μ΄ν΄λ₯Ό λκΈ° μν΄ λ κ°μ§ μ κ·Ό λ°©μμ μ°¨μ΄μ κ³Ό κ°κ°μ μ₯λ¨μ μ μ€λͺ νκ² λ€.
1. μλ² μ¬μ΄λ λ λλ§ (SSR)μ μ₯μ :
- SEO μ΅μ ν: μλ²μμ λ λλ§λ νμ΄μ§λ κ²μ μμ§μ μν΄ λ μ μΈλ±μ±λ μ μλ€. μλνλ©΄ νμ΄μ§μ 컨ν μΈ κ° HTML ννλ‘ μ΄λ―Έ μ‘΄μ¬νκΈ° λλ¬Έμ΄λ€.
- λΉ λ₯Έ 첫 νμ΄μ§ λ‘λ: μ¬μ©μμκ² λ³΄μ¬μ§ μ΄κΈ° 컨ν μΈ κ° μλ²μμ μ΄λ―Έ μμ±λμ΄ μ μ‘λλ―λ‘, ν΄λΌμ΄μΈνΈμμ μΆκ°μ μΈ μλ°μ€ν¬λ¦½νΈ μ²λ¦¬ μμ΄ λ°λ‘ νμλ μ μλ€.
- μ¬μ©μ κ²½ν κ°μ : μ΄κΈ° λ‘λ μκ°μ΄ λ¨μΆλμ΄ μ¬μ©μ κ²½ν(UX)μ΄ κ°μ λλ€.
2. ν΄λΌμ΄μΈνΈ μ¬μ΄λ λ λλ§ (CSR)μ μ₯μ :
- λΈλΌμ°μ μ΅μ ν: μΌλΆ λΌμ΄λΈλ¬λ¦¬λ κΈ°λ₯λ€μ λΈλΌμ°μ μ νΉμ κΈ°λ₯μ μμ‘΄νκΈ° λλ¬Έμ ν΄λΌμ΄μΈνΈ μ¬μ΄λμμλ§ μ λλ‘ μλνλ€.
- λμ μνΈμμ©: ν΄λΌμ΄μΈνΈ μ¬μ΄λ λ λλ§μ μ¬μ©μ μνΈμμ©μ λ°λΌ λμ μΌλ‘ μ½ν μΈ λ₯Ό λ³κ²½νλ κ²½μ°μ μ 리νλ€.
- λΆλΆμ μΈ νμ΄μ§ μ λ°μ΄νΈ: μ 체 νμ΄μ§λ₯Ό μλ‘ κ³ μΉ¨νμ§ μκ³ λ μΌλΆλΆλ§ μ λ°μ΄νΈ ν μ μλ€.
'use client' μ¬μ© μμ μ°¨μ΄μ :
- 'use client'λ₯Ό μ¬μ©νλ κ²½μ°, ν΄λΉ μ»΄ν¬λνΈλ κΈ°λ₯μ ν΄λΌμ΄μΈνΈ μ¬μ΄λμμλ§ μ€νλλ€. μ¦, μλ² μ¬μ΄λμμλ μ΄ μ»΄ν¬λνΈλ κΈ°λ₯μ λν λ λλ§μ΄ μ΄λ£¨μ΄μ§μ§ μμΌλ©°, λͺ¨λ μ²λ¦¬κ° λΈλΌμ°μ μμ μ§νλλ€.
- μ΄λ Next.jsμ SSR κΈ°λ₯μ μΌλΆ ν¬κΈ°νλ κ²μ μλ―Ένλ€. μ¦, ν΄λΉ μ»΄ν¬λνΈμ λν SEO μ΄μ μ΄λ μλ² μ¬μ΄λ λ λλ§μ μ΄κΈ° λ‘λ μκ° λ¨μΆ ν¨κ³Όλ₯Ό νμ©ν μ μκ² λλ€.
- κ·Έλ¬λ, μ΄λ λΈλΌμ°μ μ μ© κΈ°λ₯μ μ¬μ©ν΄μΌ νκ±°λ, ν΄λΌμ΄μΈνΈ μ¬μ΄λμμλ§ κ°λ₯ν λμ μνΈμμ©μ΄ νμν κ²½μ°μλ νμμ μΌ μ μλ€.
κ²°λ‘ μ μΌλ‘, Next.jsμμλ κ°λ₯ν κ²½μ° μλ² μ¬μ΄λ λ λλ§μ νμ©νλ κ²μ΄ μ’μ§λ§, νΉμ μν©μμλ ν΄λΌμ΄μΈνΈ μ¬μ΄λ λ λλ§μ΄ λ μ ν©ν μ μλ€. κ°λ° μμλ κ° μ»΄ν¬λνΈμ κΈ°λ₯μ μꡬ μ¬νκ³Ό λͺ©μ μ λ°λΌ μ μ ν λ λλ§ λ°©μμ μ ννλ κ²μ΄ μ€μνλ€.
λκΈ