ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • React๋ž‘ Next.js ์™œ ์“ฐ๋Š”๋ฐ? | ์ฝ”๋”ฉ์• ํ”Œ 2022 new ๋ฆฌ์•กํŠธ 1๊ฐ• Review
    ๊ฐœ๋ฐœ/์›น 2023. 7. 18. 20:04

     

    React๋กœ ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด๋ณธ์ง€ ์ข€ ์˜ค๋ž˜๋๋‹ค.

    ๊ธฐ์–ต์ด ๋งŽ์ด ํ๋ ค์ ธ ๋ณต์Šต ์ฐจ ์ฝ”๋”ฉ์• ํ”Œ ๋ฆฌ์•กํŠธ ๊ฐ•์˜๋ฅผ ๋“ค์—ˆ๋‹ค.

    ๊ฐœ๋ฐœํ•  ๋•Œ ์–ด๋ ดํ’‹์ด ์•Œ๊ณ  ์žˆ๋˜ ๊ฑธ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๊ฐ•์˜ ๊ฐ™๋‹ค.

    ์ด์ „ ๊ฐ•์˜๋„ ์กด์žฌํ•˜๋Š”๋ฐ, ์ตœ์‹ ํ™” ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•˜๋‹ค.

     

    ์œ„์˜ 1๊ฐ•์˜ ์ฃผ์ œ๋Š” ๋ฆฌ์•กํŠธ ๋ฝ•์ฃผ์ž… (ใ…‹ใ…‹) & ์„ค์น˜์˜€๋Š”๋ฐ,

    ์„ค์น˜๋Š” ์ „์— ํ•ด๋ณด๊ธฐ๋„ ํ–ˆ๊ณ , ์•„์ฃผ ๊ฐ„๋‹จํ•œ ์ˆ˜์ค€์ด์—ˆ๋‹ค.

    ๊ทธ๋ฆฌ๊ณ  ๋ฝ•์ฃผ์ž… ๊ณผ์ • (๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•  ๋•Œ ์ •๋ง ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค) ์—์„œ

    ๋ฆฌ์•กํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ์ด์œ  ์„ธ ๊ฐ€์ง€๋ฅผ ์•Œ๋ ค์ฃผ์—ˆ๋‹ค.

     

    1. SPA (Single Page Application) ๊ฐ€๋Šฅ
    2. ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
    3. ๋ฐ์ดํ„ฐ๊ฐ€ html์— ์ž๋™ ๋ฐ˜์˜๋จ ex) useState

     

    ์˜ˆ์ „์— ํ•ด์™ธ FE ์ธํ„ด์‹ญ ๋ฉด์ ‘์„ ๋ณผ ๋•Œ, ํ”„๋กœ์ ํŠธ์— react๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ ๋ฅผ ๋ฌผ์–ด๋ดค์—ˆ๋‹ค.

    ๊ทธ ๋•Œ ๋ฌด์ง€๋ชฝ๋งคํ•œ ๋‚˜๋Š” ์˜์–ด๋กœ ๋”๋“ฌ๋”๋“ฌ "ํšŒ์‚ฌ์—์„œ ๋งŽ์ด ์“ฐ๊ธธ๋ž˜..." ๋ผ๋Š” ๋‹ต๋ณ€์„ ํ–ˆ๊ณ 

    ๋ฉด์ ‘๊ด€๋‹˜์ด ๋งŽ์ด ๋‹นํ™ฉํ•˜์…จ๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค.

    ๋‚ด ์˜์–ด ์‹ค๋ ฅ๊ณผ ๋‹ต๋ณ€ ๋ชจ๋‘๊ฐ€ ํ™ฉ๋‹นํ•˜์…จ์„์ง€๋„ ๋ชจ๋ฅธ๋‹ค. 

    ์—ฌ๋Ÿฌ๋ถ„๋„ ์ด๋Ÿฐ ๊ฒฝํ—˜์„ ๊ฐ–๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ์ง€๊ธˆ ๋ฏธ๋ฆฌ๋ฏธ๋ฆฌ ๊ณต๋ถ€ํ•˜๋„๋ก ํ•˜์ž.

     

    1. SPA (Single Page Application) ๊ฐ€๋Šฅ

    ์ตํžˆ React์˜ ์žฅ์ ์œผ๋กœ ์œ ๋ช…ํ•˜๋‹ค.

    ๊ทธ๋ ‡๋‹ค๋ฉด Single Page Application์„ ์‚ฌ์šฉํ•˜๋ฉด ์žฅ์ ์€ ๋ญ˜๊นŒ?

    ํŠธ๋ž˜ํ”ฝ์˜ ๊ฐ์†Œ, ๋ฐ˜์‘์„ฑ์˜ ํ–ฅ์ƒ์œผ๋กœ ์ธํ•ด ์•ฑ์ฒ˜๋Ÿผ ์ž์—ฐ์Šค๋Ÿฌ์šด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX)๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

    ํŠธ๋ž˜ํ”ฝ์ด ๊ฐ์†Œํ•˜๊ณ  ๋ Œ๋”๋ง์—์„œ ์ข‹์€ ํšจ์œจ์„ ๊ฐ€์ง€๋Š” ์ด์œ ๋Š”,

    ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€ ์š”์ฒญ ์‹œ ์ „์ฒด๋ฅผ ๋ Œ๋”๋งํ•˜์ง€ ์•Š๊ณ  ๋ณ€๊ฒฝ๋˜๋Š” ๋ถ€๋ถ„๋งŒ ๊ฐฑ์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    ๋˜ํ•œ, ์ƒˆ๋กญ๊ฒŒ ๊ฐฑ์‹ ๋˜๋Š” ๋ถ€๋ถ„๋งŒ ๋ Œ๋”๋งํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ๊ณ ์นจ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์•„ ๋น ๋ฅธ ํ™”๋ฉด ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

     

    SPA๊ฐ€ ๋“ฑ์žฅํ•˜๊ธฐ ์ „, ๊ธฐ์กด Web App์˜ ๊ตฌ์„ฑ๋ฐฉ์‹์ธ SSR(Server Side Rendering)์€

    ํ™”๋ฉด์— ๋ณด์—ฌ์งˆ ๋ฆฌ์†Œ์†Œ๋ฅผ ์„œ๋ฒ„๋กœ ์š”์ฒญํ•˜๊ณ , ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜จ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ Œ๋”๋งํ–ˆ๋‹ค.

    ๊ทธ๋Ÿฌ๋‚˜ SPA๋Š” ๋ Œ๋”๋ง์˜ ์—ญํ• ์„ ์„œ๋ฒ„์—๊ฒŒ ๋„˜๊ธฐ์ง€ ์•Š๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

    ์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ ์ตœ์ดˆ์— ํ•œ ๋ฒˆ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ , ์ดํ›„์—๋Š” ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์ „๋‹ฌ๋ฐ›์•„ ํŽ˜์ด์ง€๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.

     

    ์ด๋กœ ์ธํ•ด ์ƒ๊ธฐ๋Š” trade-off ๊ฒฉ์˜ ๋‹จ์ ๋„ ์žˆ๋‹ค.

    ์ฒซ์งธ๋กœ, ์ •์  ๋ฆฌ์†Œ์Šค๋ฅผ ํ•œ๋ฒˆ์— ๋‹ค์šด๋กœ๋“œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐ ๊ตฌ๋™์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค.

    ๋‘˜์งธ๋กœ, SPA ๊ตฌ์กฐ ์ƒ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—์„œ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ,

    ํ•ด๋‹น ๋กœ์ง๋“ค์€ JavaScript๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„๋˜๋ฏ€๋กœ ์ฝ”๋“œ๊ฐ€ ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜๋Š” ๋ณด์•ˆ์  ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

    ์…‹์งธ๋กœ, ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™” (Search Engine Optimization, SEO)๊ฐ€ ์–ด๋ ต๋‹ค. 

    ๊ฒ€์ƒ‰ ์—”์ง„์ด ํฌ๋กค๋งํ•  ๋•Œ, JavaScript๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  App์ด ๋กœ๋“œ๋˜๊ธฐ ์ „์˜ ๋นˆ ์ƒํƒœ์˜ ์ฝ”๋“œ๋ฅผ ํฌ๋กค๋งํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

    ์ด ๋•Œ๋ฌธ์— ์ธ๋ฑ์‹ฑ์ด ์ œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.

    ์ „ํ†ต์ ์ธ MPA (Multi Page Rendering)์˜ ๊ฒฝ์šฐ, ๋ธŒ๋ผ์šฐ์ €์—์„œ JavaScript ์ฝ”๋“œ๊ฐ€ ๋™์ž‘ํ•˜๊ธฐ ์ „์—๋„ ์™„์„ฑ๋œ ํ˜•ํƒœ์˜ ํ…œํ”Œ๋ฆฟ (HTML์— ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฝ์ž…๋œ ์ƒํƒœ)์„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›๋Š”๋‹ค.

    ์ด ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ ์—”์ง„์ด ํŽ˜์ด์ง€ ํฌ๋กค๋งํ•˜๊ธฐ์— ๋งค์šฐ ์ ํ•ฉํ•˜๋‹ค.

     

    ์ฆ‰, SPA๋Š” ๋Œ€์ฒด๋กœ CSR(Client Side Rendering) ๋ฐฉ์‹์ด๋‹ค. 

    ์ด ๋ง์€ 'SPA๋ฅผ SSR ๋ฐฉ์‹์œผ๋กœ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ๋‹ค'๋Š” ๊ฒƒ์ด๋‹ค.

    ๋ฐ”๋กœ Next.js๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. SSR ๊ธฐ๋ฐ˜์˜ Web APP์„ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.

    ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ์ด์œ ๋Š”, SSR (๊ธฐ์กด MPA) ๋ฐฉ์‹์˜ ์žฅ์ ์„ ์ทจํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. 

     

    2. ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ

    ์šฐ๋ฆฌ๊ฐ€ ํ•จ์ˆ˜ํ™”๋ฅผ ํ–ˆ์„ ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์žฅ์ ๊ณผ ๊ฐ™๋‹ค.

    ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์ด ์˜ฌ๋ผ๊ฐ€๋ฉฐ, ์žฌ์‚ฌ์šฉ์„ฑ์ด ํ™•๋Œ€๋œ๋‹ค.

     

    3. ๋ฐ์ดํ„ฐ๊ฐ€ html์— ์ž๋™ ๋ฐ˜์˜๋จ ex) useState

    ๋ฆฌ์•กํŠธ๋Š” state์— ์ €์žฅ์‹œ,

    ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ๊ด€๋ จ html์„ ์ž๋™์œผ๋กœ ์žฌ๋ Œ๋”๋งํ•ด์ค€๋‹ค.

    ์ฐธ ํŽธ๋ฆฌํ•œ ๊ธฐ๋Šฅ์ด๋‹ค.

     

     

    Next.js๋Š” ๋‹จ์ˆœํžˆ React๋ž‘ ํ˜ธํ™˜์„ฑ์ด ์ข‹์•„์„œ Node.js ๋Œ€์‹  ์“ฐ๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ,

    ์ด๋Ÿฐ ์ด์œ ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฑธ ์˜ค๋Š˜์ด๋ผ๋„ ์•Œ๊ฒŒ ๋˜์–ด์„œ ๋‹คํ–‰์ด๋‹ค.

    ํ•˜๋งˆํƒ€๋ฉด ๋ง์‹ ์„ ๋‘ ๋ฒˆ ๋‹นํ•  ๋ป”ํ–ˆ๋‹ค.

    ํ•˜๊ณ  ์‹ถ์€ ๊ฑด ์ฐธ ๋งŽ์ง€๋งŒ ๋Š˜ ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™์€ ๋‚˜.

    ์—ด์‹ฌํžˆ, ์„ฑ์‹คํžˆ, ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‘๊ณ ,

    ์–ผ๋ฅธ ๋งํ•˜๋Š” ๊ฐ์ž๋ฅผ ํƒˆ์ถœํ•ด์„œ ์ทจ์ง์„ ํ•ด์•ผ๊ฒ ๋‹ค.

     

    ์ฐธ์กฐ : ์ฃผ์ธ์žฅ ์˜ค๋งˆ์นด์„ธ - ์ฝ๊ธฐ ์‰ฌ์šด ๋ธ”๋กœ๊ทธ ์—„์„ 

     

Designed by Tistory.