λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

react

React / SPA vs MPA

 

ReactλŠ” μƒνƒœ λ³€κ²½ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ μƒνƒœ 변경을 κ°μ§€ν•˜μ§€ λͺ»ν•œλ‹€. λΆˆν•„μš”ν•œ λ Œλ”λ§μ„ λ°©μ§€ν•˜κΈ° μœ„ν•΄ μƒνƒœ 변경을 κ°μ§€ν•΄μ•Όλ§Œ 화면을 μ—…λ°μ΄νŠΈ ν•˜λ„λ‘ ν•˜λŠ” μž‘λ™λ°©μ‹ λ•Œλ¬Έμ΄λ‹€.

ReactλŠ” λ³€κ²½λœ μƒνƒœλ₯Ό μ‚¬μš©ν•˜λŠ” μ»΄ν¬λ„ŒνŠΈλ§Œ λ¦¬λ Œλ”λ§ν•΄ μ—…λ°μ΄νŠΈ ν•˜λŠ” SPA κ΅¬ν˜„ 방법을 μ‚¬μš©ν•΄ λŒ€ν‘œμ μΈ SPA λΌμ΄λΈŒλŸ¬λ¦¬μ΄λ‹€.

 

 

SPA(Single Page Application) : ν•œ 개의 νŽ˜μ΄μ§€λ‘œ κ΅¬μ„±λœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜

μž‘λ™ 방식

  • μ΄ˆκΈ°μ— HTML 1개만 λ‘œλ“œ
  • 이후 νŽ˜μ΄μ§€ 이동은 JS둜 ν•„μš”ν•œ λ°μ΄ν„°λ§Œ 받아와 그렀쀌 (URL이 λ°”λ€Œμ–΄λ„ μ‹€μ œλ‘œ ν•œ νŽ˜μ΄μ§€μ—μ„œ λ™μž‘)
  • νŽ˜μ΄μ§€ μ „ν™˜μ‹œ μƒˆλ‘œκ³ μΉ¨μ΄ μΌμ–΄λ‚˜μ§€ μ•Šμ•„ μ•±μ²˜λŸΌ λΆ€λ“œλŸ½κ²Œ μž‘λ™

νŠΉμ§•

  • CSR(Client Side Rendering) : 화면을 μ™„μ„±ν•˜λŠ” 주체가 ν΄λΌμ΄μ–ΈνŠΈ
  • 초기 λ‘œλ”©μ΄ μ’€ λ¬΄κ²μ§€λ§Œ μ΄ν›„μ—λŠ” νŽ˜μ΄μ§€λ₯Ό λ‹€μ‹œ λ‘œλ“œν•  ν•„μš”κ°€ μ—†κΈ° λ•Œλ¬Έμ— λΉ λ₯΄λ©°, μ„œλ²„μ— λŒ€ν•œ μš”μ²­μ΄ 쀄어듀어 μ„œλ²„ 뢀담이 κ°μ†Œλ¨
  • μ²˜μŒμ—λŠ” 빈 html 파일 μƒνƒœμ΄κΈ° λ•Œλ¬Έμ— 검색 엔진이 ν¬λ‘€λ§ν•˜κΈ° 어렀움
  • React Router 라이브러리둜 React의 SPAκ΅¬ν˜„μ„ λ„μšΈ 수 있음.

 

CSR의 μž‘λ™ κ³Όμ •

 

 

↔ MPA(Multi Page Application) : μ—¬λŸ¬ 개의 νŽ˜μ΄μ§€λ‘œ κ΅¬μ„±λœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 

μž‘λ™ 방식

  • μ‚¬μš©μžκ°€ νŽ˜μ΄μ§€λ₯Ό 이동할 λ•Œλ§ˆλ‹€ μ„œλ²„μ— μš”μ²­μ„ 보냄
  • μ„œλ²„λŠ” μƒˆλ‘œμš΄ HTML λ¬Έμ„œ 전체λ₯Ό μ‘λ‹΅ν•˜κ³  ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ 보냄
  • λΈŒλΌμš°μ €λŠ” 맀번 전체 νŽ˜μ΄μ§€λ₯Ό μƒˆλ‘œ λ‘œλ“œν•¨

νŠΉμ§•

  • SSR(Server Side Rendering) : 화면을 μ™„μ„±ν•˜λŠ” 주체가 μ„œλ²„ (μ„œλ²„μ—μ„œ νŽ˜μ΄μ§€λ₯Ό λ Œλ”λ§ν•΄ λΈŒλΌμš°μ €μ— 보여주기 λ•Œλ¬Έ)
  • ν”Œλ¦¬μ»€ ν˜„μƒ λ“± νŽ˜μ΄μ§€ κ°„ 이동이 λΆ€λ“œλŸ½μ§€ μ•Šμ•„ μ’‹μ§€ μ•Šμ€ μ‚¬μš©μž κ²½ν—˜μ„ 가져닀쀄 수 있음
  • 초기 λ‘œλ”©μ΄ λΉ λ₯΄λ‹€
  • 검색 μ—”μ§„ μ΅œμ ν™”μ— μœ λ¦¬ν•˜λ‹€ (각 νŽ˜μ΄μ§€κ°€ λ³„λ„μ˜ HTML νŒŒμΌμ΄λ―€λ‘œ 검색 엔진이 μ‰½κ²Œ 크둀링이 κ°€λŠ₯)

 

SSR의 μž‘λ™ κ³Όμ •

 

 

 

 

 

이미지 좜처
https://www.solutelabs.com/blog/client-side-vs-server-side-rendering-what-to-choose-when