Skip to content

Next.js โ€‹

๐Ÿ“š References

์ธํ”„๋Ÿฐ ๊ฐ•์˜ ใ€Œํ•œ ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” Next.jsใ€
Next.js ์„น์…˜์€ ๊ฐ•์˜ ๋‚ด์šฉ์„ ์ฐธ๊ณ ํ•˜์—ฌ, ๊ฐœ์ธ์ ์œผ๋กœ ์ดํ•ดํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ณ  ๋ณด์™„ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.
์ผ๋ถ€ ์ฝ”๋“œ ์˜ˆ์‹œ์™€ ์ด๋ฏธ์ง€๋Š” ๊ฐ•์˜ ์ž๋ฃŒ๋ฅผ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค.


Next.js๋ž€? โ€‹

Next.js๋Š” React ์ „์šฉ ์›น ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ๋‹ค.
UI๋Š” React ์ปดํฌ๋„ŒํŠธ๋กœ ์ž‘์„ฑํ•˜๊ณ , ๋ผ์šฐํŒ…ยท๋ฐ์ดํ„ฐ ํŒจ์นญยท๋ Œ๋”๋งยท์„ฑ๋Šฅ ์ตœ์ ํ™” ๋“ฑ
์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋งˆ์ฃผ์น˜๋Š” ๋ฌธ์ œ๋“ค์„ ํ”„๋ ˆ์ž„์›Œํฌ ์ฐจ์›์—์„œ ํ•ด๊ฒฐํ•ด์ค€๋‹ค.


Next.js๋Š” ๋ฌด์—‡์„ ํ•ด๊ฒฐํ–ˆ์„๊นŒ? โ€‹

Next.js๋Š” ์‚ฌ์ „ ๋ Œ๋”๋ง + Hydration ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์„œ๋ฒ„์—์„œ HTML์„ ๋ฏธ๋ฆฌ ์ƒ์„ฑ
  • ๋ธŒ๋ผ์šฐ์ €๋Š” HTML์„ ๋ฐ›์ž๋งˆ์ž ํ™”๋ฉด์„ ํ‘œ์‹œ
  • ์ดํ›„ JavaScript๊ฐ€ ๋กœ๋“œ๋˜๋ฉด์„œ Hydration ์ˆ˜ํ–‰
  • ์ดํ›„๋ถ€ํ„ฐ๋Š” React SPA์ฒ˜๋Ÿผ ๋™์ž‘

๋น ๋ฅธ ์ฒซ ํ™”๋ฉด + ๋น ๋ฅธ ํŽ˜์ด์ง€ ์ด๋™ ๋‘ ์žฅ์ ์„ ๋ชจ๋‘ ๊ฐ€์ ธ๊ฐ„๋‹ค.

๐Ÿงฉ TTI (Time to Interactive)

์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ํŽ˜์ด์ง€์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์  โ†’ ํด๋ฆญยท์ž…๋ ฅ์ด ๊ฐ€๋Šฅํ•œ ์‹œ์ 

๐Ÿ’ง Hydration

์„œ๋ฒ„์—์„œ ๋‚ด๋ ค์˜จ HTML์€ ์ •์ ์ธ ๋งˆํฌ์—…์ด๋‹ค. ๋ณด์ด๊ธฐ๋งŒ ํ•  ๋ฟ, ํด๋ฆญ์€ ๋˜์ง€ ์•Š๋Š”๋‹ค.
Hydration์€ ์ด HTML์— React๊ฐ€ ์ด๋ฒคํŠธ์™€ ์ƒํƒœ๋ฅผ ์—ฐ๊ฒฐํ•ด ์ƒํ˜ธ์ž‘์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ด๋‹ค.

  • HTML์€ ๋น ๋ฅด๊ฒŒ ๋ณด์ด์ง€๋งŒ, JS ๋กœ๋”ฉ ์ „๊นŒ์ง€๋Š” ๋ณด๊ธฐ๋งŒ ๊ฐ€๋Šฅ
  • JS๊ฐ€ ๋กœ๋“œ๋˜๋ฉด ๊ทธ๋•Œ๋ถ€ํ„ฐ ํด๋ฆญ, ์ž…๋ ฅ ๋“ฑ์ด ์ž‘๋™
  • ์„œ๋ฒ„ HTML๊ณผ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ƒ์„ฑ๋˜๋Š” ๊ตฌ์กฐ๊ฐ€ ๋‹ค๋ฅด๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค

์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋Š” ๊ฒฐ๊ตญ React์™€ Next.js์˜ ํ•ต์‹ฌ์ ์ธ ์ฐจ์ด๋กœ ์ด์–ด์ง„๋‹ค.

React์™€ Next.js์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์  ์ค‘ ํ•˜๋‚˜๋Š”
๋ฐ์ดํ„ฐ๋ฅผ ์–ธ์ œ ๊ฐ€์ ธ์˜ค๊ณ , HTML์„ ์–ธ์ œ ์ƒ์„ฑํ•˜๋А๋ƒ์— ์žˆ๋‹ค.

์ด ์ฐจ์ด๋Š” ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์„ฑ๋Šฅ, ์‚ฌ์šฉ์ž ๊ฒฝํ—˜(UX), SEO์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.


Next.js๋Š” Framework โ€‹

Next.js์™€ React์˜ ์ฐจ์ด๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„์˜ ์ฃผ๋„๊ถŒ์— ์žˆ๋‹ค.

  • React: UI ๊ฐœ๋ฐœ์„ ์œ„ํ•œ JavaScript Library
  • Next.js: React ์ „์šฉ์˜ ์›น ๊ฐœ๋ฐœ Framework

Library์˜ ํŠน์ง• โ€‹

Library๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฃผ๋„๊ถŒ์„ ๊ฐ€์ง„๋‹ค.
ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ง์ ‘ ์„ ํƒํ•˜๊ณ , ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์กฐํ•ฉํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด React์—์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ…์ด ํ•„์š”ํ•˜๋‹ค๋ฉด
React Router, TanStack Router ๋“ฑ ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค.

  • ์ž์œ ๋„๊ฐ€ ๋†’๋‹ค.
  • ๊ธฐ๋ณธ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณตํ•˜๋ฉฐ, ๋‚˜๋จธ์ง€๋Š” ์ง์ ‘ ๊ตฌ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

Framework์˜ ํŠน์ง• โ€‹

Framework๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ์ฃผ๋„ํ•œ๋‹ค.
๊ฐœ๋ฐœ์ž๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ทœ์น™๊ณผ ๋ฒ”์œ„ ์•ˆ์—์„œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Next.js์—์„œ ํŽ˜์ด์ง€ ๋ผ์šฐํŒ…์„ ๊ตฌํ˜„ํ•  ๋•Œ๋Š”
Next.js๊ฐ€ ์ œ๊ณตํ•˜๋Š” Pages Router ๋˜๋Š” App Router๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

  • ์ž์œ ๋„๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ๋‚ฎ๋‹ค.
  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ•„์š”ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค.

App Router์™€ Pages Router โ€‹

Next.js๋Š” ๋‘ ๊ฐ€์ง€ ๋ผ์šฐํŒ… ๋ฐฉ์‹์„ ์ œ๊ณตํ•œ๋‹ค.

Pages Router โ€‹

ํŽ˜์ด์ง€ ๋ผ์šฐํ„ฐ๋Š” Next.js ์ดˆ์ฐฝ๊ธฐ๋ถ€ํ„ฐ ์ œ๊ณต๋˜์–ด ์˜จ ๊ธฐ์กด ๋ผ์šฐํ„ฐ ๋ฐฉ์‹์ด๋‹ค.
pages ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŒŒ์ผ ๊ตฌ์กฐ์— ๋”ฐ๋ผ ๋ผ์šฐํŒ…์ด ๊ฒฐ์ •๋œ๋‹ค.

  • ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์–ด ์•ˆ์ •์„ฑ์ด ๋†’๋‹ค.
  • ๊ธฐ์กด ๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ์—์„œ ์—ฌ์ „ํžˆ ๋„๋ฆฌ ์‚ฌ์šฉ๋œ๋‹ค.
  • ๊ตฌ์กฐ๊ฐ€ ๋‹จ์ˆœํ•ด Next.js ์ž…๋ฌธ์ž๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค.

App Router โ€‹

์•ฑ ๋ผ์šฐํ„ฐ๋Š” Next.js 13๊ณผ ํ•จ๊ป˜ ๊ณต๊ฐœ๋œ ์ƒˆ๋กœ์šด ๋ผ์šฐํŒ… ๋ฐฉ์‹์ด๋‹ค.
app ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ์„œ๋ฒ„ ์ค‘์‹ฌ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ•œ๋‹ค.

  • React Server Components
  • ๋ฐ์ดํ„ฐ ํŒจ์นญ ๋ฐ ํŽ˜์ด์ง€ ๋‹จ์œ„ ์บ์‹ฑ
  • ์ŠคํŠธ๋ฆฌ๋ฐ(Streaming)
  • Server Actions

๐Ÿค” ๊ทธ๋Ÿผ ํŽ˜์ด์ง€ ๋ผ์šฐํ„ฐ๋Š” ์ด์ œ ์•ˆ ๋ฐฐ์›Œ๋„ ๋ ๊นŒ?

App Router๊ฐ€ ๋“ฑ์žฅํ–ˆ์ง€๋งŒ, Pages Router ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ์ ํŠธ๋Š” ์—ฌ์ „ํžˆ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.
๋‘ ๋ผ์šฐํ„ฐ์˜ ์ฐจ์ด๋ฅผ ํ•จ๊ป˜ ์ดํ•ดํ•ด ๋‘๋ฉด Next.js์˜ ๋ณ€ํ™” ํ๋ฆ„์„ ํŒŒ์•…ํ•˜๋Š” ๋ฐ์—๋„,
๊ธฐ์กด ๋ฐฉ์‹์˜ ์–ด๋–ค ํ•œ๊ณ„๋ฅผ ๋ณด์™„ํ–ˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐ์—๋„ ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค!