[Next.js] Next.js๋ž€?

Janeยท2023๋…„ 8์›” 23์ผ
1

Next.js

๋ชฉ๋ก ๋ณด๊ธฐ
1/12
post-thumbnail
post-custom-banner

๐Ÿค” Next.js๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

  • React๋ฅผ ์œ„ํ•ด ๋งŒ๋“  ์˜คํ”ˆ์†Œ์Šค JS ์›น ํ”„๋ ˆ์ž„์›Œํฌ
  • SSR, SSG, ISR๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค.
  • ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์‰ฌ์šด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.

๐ŸŽž๏ธ Next.js์˜ ํƒ„์ƒ ๋ฐฐ๊ฒฝ

  • ๊ณผ๊ฑฐ์˜ ์›น ํŽ˜์ด์ง€๋“ค์€ ๋Œ€๋ถ€๋ถ„ SSR ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ–ˆ์œผ๋ฉฐ ํŽ˜์ด์ง€๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๊ตฌ์„ฑ๋œ Multi-page-form์„ ์‚ฌ์šฉํ–ˆ๋‹ค.
  • ํ•˜์ง€๋งŒ ์Šค๋งˆํŠธํฐ์˜ ๋“ฑ์žฅ์œผ๋กœ, ๋ชจ๋ฐ”์ผ์— ์ตœ์ ํ™”๋œ ํ˜•ํƒœ์˜ ์›น ํŽ˜์ด์ง€์˜ ํ•„์š”์„ฑ์ด ๋Œ€๋‘๋˜์—ˆ๋‹ค.

CSR์ด ๊ฐ€๋Šฅํ•œ SPA์˜ ๋“ฑ์žฅ!

  • SPA๋Š” ๊ธฐ์กด์˜ ์›น ํŽ˜์ด์ง€์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ํ•œ ๊ฐœ์˜ ํŽ˜์ด์ง€์—์„œ ์—ฌ๋Ÿฌ ๋™์ž‘์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.
  • SPA๋ฅผ ์ง€์›ํ•˜๋Š” React, Angular, Vue์™€ ๊ฐ™์€ ์ตœ์‹  JS ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์˜ ๋“ฑ์žฅ์œผ๋กœ ๋™์  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๋ถ„์•ผ๋Š” ๋ณ€ํ™”์˜ ๊ธ‰๋ฌผ์‚ด์„ ํƒ€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.
  • ๊ทธ ์ค‘์—์„œ๋„ React๋Š” ์›น, ์•ฑ, ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ ๊ฐœ๋ฐœ, VR ๊ตฌํ˜„ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ชฉ์ ์œผ๋กœ์˜ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜์—ฌ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” JS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋˜์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ

React๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Client-Side์—์„œ๋งŒ ์ž‘๋™ํ•œ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋‹ค.

  • ๊ธฐ๋ณธ์ ์œผ๋กœ React๋Š” ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ์‹คํ–‰(CSR)๋˜๋ฏ€๋กœ React๋ฅผ ์‚ฌ์šฉํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ SEO์˜ ํšจ๊ณผ๋ฅผ ๋ณด๊ธฐ ์–ด๋ ต๋‹ค.
  • ์ฒซ ํ™”๋ฉด์— ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ œ๋Œ€๋กœ ํ‘œํ˜„ํ•˜๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์ดˆ๊ธฐ์— ์„ฑ๋Šฅ ๋ถ€๋‹ด์ด ์ƒ๊ธด๋‹ค.
    • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ „์ฒด ์›น ์•ฑ ๋ฒˆ๋“ค ๋‹ค์šด๋กœ๋“œ โžก๏ธ ๋‹ค์šด๋กœ๋“œํ•œ ๋‚ด์šฉ ๋ถ„์„ โžก๏ธ ์ฝ”๋“œ ์‹คํ–‰ โžก๏ธ ๊ฒฐ๊ณผ ๋„์ถœํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.
    • ์•„์ฃผ ํฐ ์›น ์•ฑ์˜ ๊ฒฝ์šฐ ์ฒซ ํ™”๋ฉด ๋ Œ๋”๋ง์— ์ˆ˜ ์ดˆ๊ฐ€ ์†Œ์š”๋˜๊ธฐ๋„ ํ•œ๋‹ค.
  • ๋ฌผ๋ก  React์—์„œ SSR์˜ ๊ตฌํ˜„์ด ์•„์˜ˆ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ๊ต‰์žฅํžˆ ๋ณต์žกํ•œ ๊ณผ์ •์„ ํ•„์š”๋กœ ํ•œ๋‹ค.

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Next.js๊ฐ€ ํƒ„์ƒํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

  • ์›น ์•ฑ์„ ์„œ๋ฒ„์—์„œ ๋ฏธ๋ฆฌ ๋ Œ๋”๋งํ•ด๋‘๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์—ฐ๊ตฌ์˜ ๊ฒฐ๊ณผ๋กœ, Vercel์ด Next.js๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

๐Ÿง React๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” Next.js์—์„œ ์–ด๋–ป๊ฒŒ SSR์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

๐ŸŒŸ Next.js์˜ ์ž‘๋™ ์›๋ฆฌ

  1. ์‚ฌ์šฉ์ž๊ฐ€ ์ฒ˜์Œ ์„œ๋ฒ„์— ํŽ˜์ด์ง€ ์ ‘์†์„ ์š”์ฒญํ•˜๋ฉด, SSR ๋ฐฉ์‹์œผ๋กœ ๋ Œ๋”๋ง ๋  HTML ์ „์†ก
  2. ๋ธŒ๋ผ์šฐ์ €์—์„œ JS ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ , React๋ฅผ ์‹คํ–‰
  3. ์‚ฌ์šฉ์ž์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ, ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ ์‹œ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ CSR์˜ ๋ฐฉ์‹์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฒ˜๋ฆฌ

๐Ÿค” Next.js, ์™œ ์‚ฌ์šฉํ• ๊นŒ?

๐Ÿ”Ž Next.js์—์„œ์˜ ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™” (SEO)

  • Next.js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์ด์œ  ์ค‘ ํ•˜๋‚˜๊ฐ€ SSR์˜ ๊ตฌํ˜„์ด๊ณ , SSR์€ SEO์— ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.
  • ์ฆ‰, SEO๊ฐ€ Next.js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํฐ ์ด์œ ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿง SEO, ์™œ ํ•„์š”ํ•œ๊ฐ€!

  • ๋‹จ์ˆœ ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ…๋ถ€ํ„ฐ ๋Œ€๊ทœ๋ชจ ์˜จ๋ผ์ธ ์‡ผํ•‘๋ชฐ๊นŒ์ง€, ํŽ˜์ด์ง€๋ฅผ ์—ด์‹ฌํžˆ ๋งŒ๋“ ๋‹ค๊ณ  ํ•ด๋„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด ์—†์œผ๋ฉด ๋ฌด์šฉ์ง€๋ฌผ์ผ ๊ฒƒ์ด๋‹ค.
  • ๋ธŒ๋ผ์šฐ์ €์— ํŽ˜์ด์ง€์˜ ๋…ธ์ถœ ๋นˆ๋„๋ฅผ ๋†’์—ฌ์•ผ ์‚ฌ์šฉ์ž ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ , ๋” ๋งŽ์€ ์ˆ˜์ต ์ฐฝ์ถœ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฆ‰, ์„œ๋น„์Šค๋‚˜ ๋งˆ์ผ€ํŒ…์ ์ธ ์ธก๋ฉด์—์„œ ๊ฒ€์ƒ‰ ์—”์ง„์— ๋Œ€ํ•œ ์ตœ์ ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” SEO๋Š” ๋ฐ˜๋“œ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ด๋‹ค.

๐Ÿง SEO, ์™œ SSR์—์„œ ๋” ์ž˜ ์ž‘๋™ํ•˜๋‚˜!

  • ์‚ฌ์ดํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํฌ๋กค๋งํ•  ๋•Œ, ๊ฒ€์ƒ‰ ์—”์ง„ ๋ด‡๋“ค์€ JS ํŒŒ์ผ์„ ํ•ด์„ํ•  ์ˆ˜ ์—†์–ด HTML ํŒŒ์ผ์—์„œ ํฌ๋กค๋ง์„ ํ•˜๊ฒŒ ๋œ๋‹ค.
    • ํฌ๋กค๋ง: ์›น ํŽ˜์ด์ง€๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™€์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ด๋‚ด๋Š” ํ–‰์œ„
  • CSR ๋ฐฉ์‹์€ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์ „๊นŒ์ง€ HTML์— ์•„๋ฌด ๊ฒƒ๋„ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•  ์ˆ˜ ์—†๊ณ , ์ด ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ ์—”์ง„์— ๋…ธ์ถœ์ด ์–ด๋ ค์›Œ์ง„๋‹ค.
  • SSR ๋ฐฉ์‹์€ ์„œ๋ฒ„ ์ธก์—์„œ ํ™”๋ฉด์„ ๊ทธ๋ ค์„œ ๋ณด๋‚ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— HTML ์•ˆ์— ์ด๋ฏธ ์ปจํ…์ธ ๋“ค์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ์ด๋ฏ€๋กœ, ํฌ๋กค๋Ÿฌ ๋ด‡๋“ค์˜ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์ด ์šฉ์ดํ•ด์ง„๋‹ค.

๐Ÿง ๊ทธ๋ ‡๋‹ค๋ฉด Next.js๋Š” ์™œ ์ข‹์€๊ฑฐ์ง€?

  • Next.js๋Š” ์‚ฌ์šฉ์ž์˜ ์ ‘์† ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด, ์„œ๋ฒ„์—์„œ ์ดˆ๊ธฐ์— SSR ๋ฐฉ์‹์œผ๋กœ ๋ Œ๋”๋ง ๋  HTML์„ ๋ณด๋‚ด๊ณ , ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์ด๋ฅผ JS ํŒŒ์ผ๋กœ ๋‹ค์šด๋กœ๋“œ ๋ฐ›์•„ React์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— SEO์˜ ์›ํ™œํ•œ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ด์— ๋ง๋ถ™์—ฌ ํŽ˜์ด์ง€ ์ด๋™ ์‹œ์—๋Š” CSR์˜ ๋ฐฉ์‹์œผ๋กœ, ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ SPA๋กœ์„œ์˜ ์žฅ์ ๋„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค!

๐Ÿ‘พ Next.js์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๋“ค

์ฝ”๋“œ ๋ถ„ํ• 

  • ์ผ๋ฐ˜์ ์ธ React SPA์—์„œ๋Š” ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์‹œ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‚ด๋ ค๋ฐ›๋Š”๋‹ค.
    • ์ด๋Š” ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ณ , ์šฉ๋Ÿ‰์ด ์ปค์ง€๋ฉด ๋กœ๋”ฉ ์†๋„๊ฐ€ ์ง€์—ฐ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  • Next.js๋Š” ํ•„์š”์— ๋”ฐ๋ผ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•˜๋Š” ์ฝ”๋“œ ๋ถ„ํ• ์„ ํ†ตํ•ด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐœ์„ ํ•˜์˜€๋‹ค.
  • ๋‹ค์‹œ ๋งํ•ด, Next.js๋Š” ์›น ํŽ˜์ด์ง€์˜ ์ฒซ ํ™”๋ฉด ๋กœ๋”ฉ ์‹œ JS payload ๋ฒˆ๋“ค ๋ฉ์–ด๋ฆฌ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์œผ๋กœ ์กฐ๊ฐ๋‚ด์—ฌ ์ฒ˜์Œ์— ๊ฐ€์žฅ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ „์†กํ•ด์ฃผ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๋”ฉ ํƒ€์ž„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  • webpack, parcel ๋“ฑ์˜ ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ์—์„œ๋„ ์ง€์›ํ•˜๊ณ  ์žˆ๋Š” ๊ธฐ๋Šฅ์ด์ง€๋งŒ
    next.js ์‚ฌ์šฉ ์‹œ ๋ณ„๋„์˜ ์„ค์ •์ด ์—†๋”๋ผ๋„ ์ž๋™์œผ๋กœ ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋œ๋‹ค.
  • dynamic import๋ฅผ ํ†ตํ•ด ๋ชจ๋“ˆ์ด ํ˜ธ์ถœ๋  ๋•Œ๋งŒ ํ•ด๋‹น ๋ชจ๋“ˆ์ด import ๋˜๊ฒŒ ํ•œ๋‹ค.

(์ด๋ฏธ์ง€ ์ถœ์ฒ˜)

  • ์œ„์˜ ์˜ˆ์‹œ ์ด๋ฏธ์ง€์—์„œ, pages ํด๋” ์•ˆ์—๋Š” ๊ฐ page์— ๋Œ€ํ•œ ๋ผ์šฐํŠธ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.
  • components ํด๋”์—๋Š” React ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๋“ค์–ด๊ฐ„๋‹ค.
  • ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ฒ˜์Œ ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜๋Š” ์ƒํ™ฉ์—์„œ๋Š” index page๋งŒ, ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ ์‹œ ํ•ด๋‹น ํŽ˜์ด์ง€๋งŒ ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

pre-reloading

  • Next.js๋Š” pre-rendering์„ ํ†ตํ•ด ๋ฏธ๋ฆฌ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ Œ๋”๋ง๋œ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋ฅผ ํ†ตํ•ด UX๋ฅผ ๊ฐœ์„ ํ•˜๊ณ , SEO์—๋„ ํŠนํ™”๋œ ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹ค๋ฅธ ๋ฌธ์„œ์—์„œ ๋” ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ฒ ์ง€๋งŒ, SSR, SSG๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ , ์‹ฌ์ง€์–ด๋Š” SSR๊ณผ CSR์˜ ํ˜ผํ•ฉ ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅ์ผ€ํ•œ๋‹ค.

Next.js์—์„œ์˜ SSR, SSG ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ


Next.js์—์„œ์˜ CSR ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…

  • ์ง๊ด€์ ์ธ ํŽ˜์ด์ง€ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•œ๋‹ค.
  • ํ”„๋กœ์ ํŠธ์˜ ๊ฐ€์žฅ ๋ฐ”๊นฅ ํด๋”์—์„œ ์ปดํฌ๋„ŒํŠธ export ์‹œ ํด๋”๋ช…์ด ํŽ˜์ด์ง€์˜ route๊ฐ€ ๋œ๋‹ค.
    • ์˜ˆ_1: /pages/index.tsx โžก๏ธ /
    • ์˜ˆ_2: /pages/components/buttons โžก๏ธ /components/buttons
  • dynamic route๋ฅผ ์ง€์›ํ•œ๋‹ค.

Next.js์˜ ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

๊ทธ ์™ธ์˜ ์žฅ์ ๋“ค

TS์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์ง€์›, ์ž๋™ polyfill ์ ์šฉ, ์ด๋ฏธ์ง€ ์ตœ์ ํ™”, ์„ฑ๋Šฅ ๋ถ„์„
built-in-css, fast refresh, API routes ๋“ฑ๋“ฑ.

๐Ÿค– Next.js์™€ ๋น„์Šทํ•œ ํ”„๋ ˆ์ž„์›Œํฌ

  • Next.js ์™ธ์—๋„ JS ์˜์—ญ์—์„œ SSR์„ ์ง€์›ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์ด ์กด์žฌํ•œ๋‹ค.

Gatsby

  • ์ •์  ์›น ์‚ฌ์ดํŠธ ์ƒ์„ฑ๋งŒ์„ ์ง€์›ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ
  • ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ๋นŒ๋“œ ์‹œ์ ์— ๋ฏธ๋ฆฌ ๋ Œ๋”๋งํ•˜์—ฌ ์ •์  ์ฝ˜ํ…์ธ  ํ˜•ํƒœ๋กœ ๋งŒ๋“ ๋‹ค.
  • ์–ด๋–ค ์ฝ˜ํ…์ธ  ์ „์†ก ๋„คํŠธ์›Œํฌ๋กœ๋„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.
    • CDN: ๋ฐ์ดํ„ฐ ์‚ฌ์šฉ๋Ÿ‰ ๋งŽ์€ ์•ฑ์˜ ์›น ํŽ˜์ด์ง€ ๋กœ๋“œ ์†๋„๋ฅผ ๋†’์ด๋Š” ์ƒํ˜ธ ์—ฐ๊ฒฐ๋œ ์„œ๋ฒ„ ๋„คํŠธ์›Œํฌ
    • ์ง€๋ฆฌ์ ์œผ๋กœ ๋ถ„์‚ฐ๋œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„๋กœ, ์›น ์ฝ˜ํ…์ธ ๋ฅผ ์‚ฌ์šฉ์ž์™€ ๊ฐ€๊นŒ์šด ๊ณณ์—์„œ ์ „์†กํ•จ์œผ๋กœ์จ ์ „์†ก ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ์ •์  ์›น ์‚ฌ์ดํŠธ๋งŒ์„ ์ง€์›ํ•˜๋ฏ€๋กœ ๋™์  ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์„ ์ง€์›ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์— ๋น„ํ•ด ์„ฑ๋Šฅ์ด ๋›ฐ์–ด๋‚˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๋Š” ๋ณต์žกํ•œ ์›น ์‚ฌ์ดํŠธ ๊ฐœ๋ฐœ์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

Razzle

  • SSR์ด ๊ฐ€๋Šฅํ•œ JS ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ
  • CRA๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด์„œ๋„ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ์˜ ๋ณต์žกํ•œ ์•ฑ ์„ค์ •์„ ๋‹จ์ˆœํ•˜๊ฒŒ ์ถ”์ƒํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์‚ฌ์šฉํ•  ํ”„๋ ˆ์ž„์›Œํฌ์— ๊ด€ํ•œ ์ง€์‹์ด ์—†์–ด๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • React, Vue, Angular, ... ์–ด๋–ค ํ”„๋ ˆ์ž„์›Œํฌ๋“  ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

Nuxt.js

  • Vue๋ฅผ ์‚ฌ์šฉํ•œ ์›น ์•ฑ ๊ฐœ๋ฐœ์—์„œ React์˜ Next.js์— ํ•ด๋‹นํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

Angular Universal

  • Angular์„ ์‚ฌ์šฉํ•œ ์›น ์•ฑ ๊ฐœ๋ฐœ์—์„œ React์˜ Next.js์— ํ•ด๋‹นํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ

๐Ÿ”Ž References

์ฐธ๊ณ  ์ž๋ฃŒ ๋ชจ์Œ
profile
An investment in knowledge pays the best interest๐Ÿ™ƒ
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€