Skip to content

greedy-team/react-pokemon-ssr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

4 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

pokedex

ํฌ์ผ“๋ชฌ ๋„๊ฐ with Server Side Rendering

CSR(Client-Side Rendering)์œผ๋กœ ๋™์ž‘ํ•˜๋Š” React ํฌ์ผ“๋ชฌ ๋„๊ฐ ์•ฑ์„ SSR(Server-Side Rendering)์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

โ›ณ๏ธ ํ•™์Šต ๋ชฉํ‘œ

  • CSR ์•ฑ์˜ ์ดˆ๊ธฐ ๋กœ๋”ฉ ๊ณผ์ •์„ ๋ถ„์„ํ•˜๊ณ , SSR์ด ํ•ด๊ฒฐํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Vite ํ™˜๊ฒฝ์—์„œ ์„œ๋ฒ„ ์—”ํŠธ๋ฆฌํฌ์ธํŠธ์™€ ํด๋ผ์ด์–ธํŠธ ์—”ํŠธ๋ฆฌํฌ์ธํŠธ๋ฅผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • react-dom/server API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์—์„œ React ์ปดํฌ๋„ŒํŠธ๋ฅผ HTML๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Hydration์˜ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ , ์„œ๋ฒ„ HTML ์œ„์— ํด๋ผ์ด์–ธํŠธ React๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Hydration Mismatch๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์›์ธ์„ ํŒŒ์•…ํ•˜๊ณ  ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„์—์„œ ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌํ•˜์—ฌ ๋™์ผํ•œ ์ดˆ๊ธฐ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„์—์„œ ์š”์ฒญ URL๊ณผ ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ•ด์„ํ•˜์—ฌ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ „ ์ค€๋น„

๐ŸŽ“ ์‹œ์ž‘ ์ „์— ์•Œ์•„์•ผ ํ•  ๊ฒƒ๋“ค

  • Express
  • React Components
  • React Router

๐Ÿ’ก ์ฐธ๊ณ ์‚ฌํ•ญ

  • /csr์ดํ•˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ํฌ์ผ“๋ชฌ ๋„๊ฐ ์•ฑ์ด ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    • ํฌ์ผ“๋ชฌ ์นด๋“œ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
    • ์นด๋“œ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ƒ์„ธ ํŽ˜์ด์ง€(/pokemon/:id)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    • ํŽ˜์ด์ง€๋„ค์ด์…˜(?page=2)์œผ๋กœ ๋‹ค์Œ ํŽ˜์ด์ง€์˜ ํฌ์ผ“๋ชฌ์„ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Note

๋ณธ ๋ฏธ์…˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” PokeAPI๋Š” ๋ณ„๋„์˜ API ํ‚ค ๋ฐœ๊ธ‰์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ƒํƒœ ๊ด€์ฐฐ

SSR ์ „ํ™˜์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—, ํ˜„์žฌ CSR ์•ฑ์˜ ๋™์ž‘์„ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์˜ ๋„คํŠธ์›Œํฌ ํƒญ์—์„œ ์ฒซ ๋ฒˆ์งธ HTML ์‘๋‹ต์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. Performance ํƒญ์—์„œ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ๊ณผ์ •์„ ๋…นํ™”ํ•˜๊ณ , ์ฝ˜ํ…์ธ ๊ฐ€ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๊ธฐ๊นŒ์ง€์˜ ๊ณผ์ •์„ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ธŒ๋ผ์šฐ์ € ์„ค์ •์—์„œ JavaScript๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•œ ๋’ค ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ง„ํ–‰ ๋ฐฉ์‹

  • ๋ณธ ์ €์žฅ์†Œ๋ฅผ forkํ•˜์—ฌ ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค.
  • Step๋ณ„๋กœ ์ปค๋ฐ‹์„ ๋ถ„๋ฆฌํ•˜์—ฌ, ์ „ํ™˜ ๊ณผ์ •์„ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
  • ๋ชจ๋“  Step์„ ์™„๋ฃŒํ•œ ํ›„ PR์„ ์˜ฌ๋ฆฐ๋‹ค.
  • ๊ฐ Step์— ๋Œ€ํ•œ ์ •๋ณด๋Š” /steps ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„์— ๋ฌธ์„œ๋กœ ์กด์žฌํ•œ๋‹ค.

ํ™˜๊ฒฝ ์š”๊ตฌ์‚ฌํ•ญ

  • Node.js 20 ์ด์ƒ
  • npm 10 ์ด์ƒ

About

๐Ÿ…ฟ๏ธ ๊ทธ๋ฆฌ๋”” react pokemon SSR ๋ฏธ์…˜

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors