Pages

์•„๋ž˜ ๋ฌธ์„œ๋Š” Next.js 9.3 ์ด์ƒ ๋ฒ„์ „์—์„œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

Pages

Next.js์—์„œ๋Š” pages ํด๋” ์•„๋ž˜์— ์žˆ๋Š” ํŒŒ์ผ์˜ ์ด๋ฆ„์œผ๋กœ ์ž๋™์œผ๋กœ ๋ผ์šฐํŒ… ๋œ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด pages/about.js์— ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ์„๋•Œ

์šฐ๋ฆฌ๋Š” ์ด ์ปดํฌ๋„ŒํŠธ์— /about ๋ผ์šฐํŒ…์œผ๋กœ ์ง„์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด About ์ปดํฌ๋„ŒํŠธ๋Š” ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋œ๋‹ค.

๋‹ค์ด๋‚˜๋ฏน ๋ผ์šฐํŒ… (Pages with Dynamic Routes)

๊ธฐ๋ณธ์ ์œผ๋กœ Next.js๋Š” ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ pre-rendersํ•œ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ ํŽ˜์ด์ง€์— ํ•ด๋‹นํ•˜๋Š” HTML์„ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•œ๋‹ค๋Š” ๋ง์ด๋‹ค. ๋นˆ ๊ป๋ฐ๊ธฐ HTML์„ ๋‚ด๋ ค์ค€ ๋‹ค์Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ทธ ๊ป๋ฐ๊ธฐ ๋‚ด๋ถ€๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹๋ณด๋‹ค pre renderํ•˜๋Š”๊ฒŒ ์ดˆ๊ธฐ ํŽ˜์ด์ง€๊ฐ€ ๋” ๋นจ๋ฆฌ ๋œจ๋ฉฐ ๊ฒ€์ƒ‰์—”์ง„๋ด‡์ด ๋“ค์–ด์™”์„๋•Œ ํŽ˜์ด์ง€๋ฅผ ๋ฐ”๋ฅด๊ฒŒ ์ฝ์–ด๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ SEO์—๋„ ์ ํ•ฉํ•˜๋‹ค.

ํŽ˜์ด์ง€ HTML์—๋Š” ์ตœ์†Œํ•œ์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋งŒ ๋“ค์–ด์žˆ๋‹ค. ํŽ˜์ด์ง€๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์— ๋กœ๋“œ๋œ ํ›„์— ์ ์€์–‘์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ  ๋‚˜๋ฉด ํŽ˜์ด์ง€๊ฐ€ ์œ ์ €์™€ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•œ ์ƒํƒœ(interactive)๊ฐ€ ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ hydration์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

hydration์ด๋ž€? hydration์ด๋ผ๋Š” ๋œป์€ ์ง์—ญํ•˜๋ฉด '์ˆ˜ํ™”'๋ผ๋Š” ๋œป์ด๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ์Šค๋Ÿฝ๊ฒŒ ํ•ด์„์„ ํ•ด๋ณด์ž๋ฉด ์–ด๋–ค ์ •์ ์ธ ์ƒํƒœ์˜€๋˜๊ฒƒ์ด ๋ฌผ์„ ๋งž์•„ ๋™์ ์ธ ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค. Next.js๋‚˜ React.js์—์„œ์˜ hydration์€ ์„œ๋ฒ„์‚ฌ์ด๋“œ๋ Œ๋”๋ง์— ์˜ํ•ด Staticํ•˜๊ฒŒ ๋ Œ๋”๋ง๋œ HTML์— ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋ถ™์—ฌ์„œ ๋™์ ์ธ ์ƒํƒœ๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

Pre-rendering์˜ ๋‘๊ฐ€์ง€ ํ˜•ํƒœ

Next.js๋Š” ๋‹ค์Œ ๋‘๊ฐ€์ง€ ํ˜•ํƒœ์˜ Pre-rendering์„ ํ•œ๋‹ค.

  • Static Generation(์ถ”์ฒœ๋จ): HTML์ด ๋นŒ๋“œ ํƒ€์ž„์— ์ƒ์„ฑ๋˜๊ณ  ์œ ์ €๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ• ๋•Œ ๊ณ„์† ์žฌ์‚ฌ์šฉ ๋œ๋‹ค.

  • Server-side Rendering(SSR): HTML์ด ์œ ์ €๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์š”์ฒญํ–ˆ์„๋•Œ ์ƒ์„ฑํ•œ๋‹ค.

์ค‘์š”ํ•œ๊ฒƒ์€, ๋‹น์‹ ์ด ์–ด๋–ค ํ˜•ํƒœ์˜ Pre rendering์„ ์‚ฌ์šฉํ• ๊ฒƒ์ธ์ง€ Next.js๊ฐ€ ์„ ํƒ๊ถŒ์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํŽ˜์ด์ง€์—์„œ Static Generation์„ ์‚ฌ์šฉํ•ด์„œ ๋น ๋ฅด๊ฒŒ ๋ Œ๋”๋งํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์ผ๋ถ€ ํŽ˜์ด์ง€์— ๋Œ€ํ•ด์„œ๋Š” SSR์„ ํ•˜๊ฒŒ ๋˜๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํ˜•ํƒœ์˜ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๋ฌผ๋ก , Static Generation์ด๋‚˜ Server side rendering๊ณผ Client-side Rendering๋„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์€ ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„์ด client์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ์˜ํ•ด ๋ Œ๋”๋ง ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ง์ด๋‹ค. ์ด ๋ถ€๋ถ„์„ ์ข€ ๋” ์ž์„ธํžˆ ๋ณด๊ณ  ์‹ถ์œผ๋ฉด Data Fetching ๋ถ€๋ถ„์„ ์ฝ์–ด๋ณด๊ณ  ์˜ค๋Š”๊ฑธ ์ถ”์ฒœํ•œ๋‹ค.

์„œ๋ฒ„์‚ฌ์ด๋“œ๋ Œ๋”๋ง๋ณด๋‹ค๋Š” Static Generation์„ ์ข€ ๋” ์ถ”์ฒœํ•œ๋‹ค. ์™œ๋ƒ๋ฉด ์„ฑ๋Šฅ์ด ๋” ์ข‹๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์Šคํƒœํ‹ฑํ•˜๊ฒŒ ์ƒ์„ฑ๋œ ํŽ˜์ด์ง€๋Š” CDN์— ์˜ํ•ด ์บ์‹œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ธฐ๋„ ํ•˜๊ณ  ํŠธ๋ž˜ํ”ฝ๋„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์„œ๋ฒ„์‚ฌ์ด๋“œ๋ Œ๋”๋ง์„ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.

Static Generation, SSR, CSR ๋ชจ๋‘ ๋™์‹œ์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. CSR์˜ ๊ฒฝ์šฐ ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ์˜ํ•ด ๋ Œ๋”๋ง ๋œ๋‹ค๋Š”๊ฒƒ์ด๋‹ค.

ํŽ˜์ด์ง€๊ฐ€ Static Generation๋˜๋ฉด ํ”„๋กœ์ ํŠธ๊ฐ€ ๋นŒ๋“œ๋ ๋–„ ๋ฏธ๋ฆฌ ํŽ˜์ด์ง€๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. next build๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด static HTML๋“ค์ด ์ƒ์„ฑ๋œ๋‹ค.

๋ฐ์ดํ„ฐ ์—†์ด Static Generation

๊ธฐ๋ณธ์ ์œผ๋กœ Next.js๋Š” ํŽ˜์ด์ง€๋ฅผ SSR์ด ์•„๋‹ˆ๋ผ Staticํ•˜๊ฒŒ ๋ Œ๋”๋งํ•œ๋‹ค. ๋ฌผ๋ก  ์ด๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ fetchingํ•˜์ง€๋„ ์•Š๋Š”๋‹ค. ์˜ˆ์‹œ๋ฅผ ํ•˜๋‚˜ ๋ณด์ž.

์ด About ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ๋Š” ๊ทธ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋„ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋นŒ๋“œ ํƒ€์ž„์— ๋ฏธ๋ฆฌ HTML์„ ์ƒ์„ฑํ•ด๋‘˜ ์ˆ˜ ์žˆ๋‹ค. Next.js๋Š” 1๊ฐœ์˜ ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ๋‹น 1๊ฐœ์˜ HTML์„ ์ƒ์„ฑํ•œ๋‹ค.

๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ Static Generation

์–ด๋–ค ํŽ˜์ด์ง€๋Š” pre renderingํ•˜๊ธฐ ์œ„ํ•ด์„œ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„์š”๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ๋‘๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด๋ณด์ž.

  1. ๋‹น์‹ ์˜ ํŽ˜์ด์ง€ content๊ฐ€ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ์— ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ. (getStaticProps๋ฅผ ์‚ฌ์šฉํ•˜๋ผ)

  2. ๋‹น์‹ ์˜ ํŽ˜์ด์ง€ paths๊ฐ€ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ์— ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ. (getStaticPaths๋ฅผ ์‚ฌ์šฉํ•˜๋ผ)

1. ํŽ˜์ด์ง€ content๊ฐ€ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ์— ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ

๋‹น์‹ ์˜ ๋ธ”๋กœ๊ทธ๊ฐ€ ํฌ์ŠคํŒ… ๋ชฉ๋ก์„ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด CMS(content management system)์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

์ด๋•Œ getStaticProps๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋นŒ๋“œ ํƒ€์ž„์— api๋ฅผ ํ˜ธ์ถœํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜จ๋‹ค์Œ์— HTML์„ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด๋†“๋Š”๋‹ค.

2. ํŽ˜์ด์ง€ paths๊ฐ€ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ์— ์˜์กดํ•˜๋Š” ๊ฒฝ์šฐ

๋ธ”๋กœ๊ทธ์— ์ž‘์„ฑ๋œ ํฌ์ŠคํŠธ๋“ค์€ id๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค. ๊ทผ๋ฐ Next.js๋Š” pagesํด๋” ์•„๋ž˜์— ์žˆ๋Š” ํŒŒ์ผ์˜ ์ด๋ฆ„์œผ๋กœ ๋ผ์šฐํŒ…๋œ๋‹ค๊ณ  ํ–ˆ์—ˆ๋‹ค. ๊ทธ๋Ÿผ ๋ชจ๋“  ํฌ์ŠคํŠธ์˜ id์— ๋Œ€ํ•ด์„œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋ƒ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค. dynamic routes์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์ด ๋‹ค์ด๋‚˜๋ฏน ๋ผ์šฐํŒ…์€ ์˜ˆ๋ฅผ๋“ค์–ด, pages/posts/[id].js์™€ ๊ฐ™์€ ํŒŒ์ผ์ด ์žˆ์„๋•Œ posts/1, posts/2 ...์™€ ๊ฐ™์ด ๋‹ค์–‘ํ•œ ๊ฒฝ๋กœ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

posts/1๊ณผ ๊ฐ™์ด ๋ผ์šฐํŒ…์„ ํ•˜๊ฒŒ ๋˜๋ฉด Next.js๋Š” ๊ทธ๋•Œ ๋™์ ์œผ๋กœ 1๋ฒˆ ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ํฌ์ŠคํŠธ์˜ id๋Š” ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)์— ์˜์กดํ•˜๊ธฐ ๋–„๋ฌธ์— ๋นŒ๋“œ ํƒ€์ž„์— ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด๋‘˜ ์ˆ˜๊ฐ€ ์—†๋‹ค. ์™œ๋ƒ๋ฉด, ๋ธ”๋กœ๊ทธ์—์„œ ์ƒˆ๋กœ์šด ๊ธ€์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ ๊ธ€์— ๋Œ€ํ•ด์„œ๋„ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋Š”๋ฐ ๊ทธ๋Ÿด๋•Œ๋งˆ๋‹ค ์žฌ๋นŒ๋“œํ• ์ˆ˜๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ด๋ ‡๋“ฏ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•˜๋Š” ํŽ˜์ด์ง€์— ๋Œ€ํ•ด์„œ๋Š” getStaticPaths๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ๋นŒ๋“œํƒ€์ž„์— ํ˜ธ์ถœ๋˜๊ณ  ์–ด๋–ค ๊ฒฝ๋กœ๋“ค์— ๋Œ€ํ•ด์„œ ๋ฏธ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ• ์ง€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

fallback: false์˜ ์˜๋ฏธ๋Š” paths์— ํ•ด๋‹นํ•˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€์— ๋Œ€ํ•ด์„œ 404๊ฐ€ ๋–จ์–ด์ง„๋‹ค๋Š” ๋ง์ด๋‹ค. ์œ„ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•œ๋‹ค์Œ์— next build๋ฅผ ์ž…๋ ฅํ•˜๋ฉด /posts/1, /posts/2 ์™€ ๊ฐ™์ด ๋นŒ๋“œ ์‹œ์ ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋“ค์–ด์žˆ์—ˆ๋˜ ํฌ์ŠคํŠธ ๋ชฉ๋ก์— ๋Œ€ํ•ด์„œ ๋ฏธ๋ฆฌ HTMLํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•ด๋‘˜ ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ์•„๋ž˜์™€ ๊ฐ™์ด getStaticProps์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

pages/posts/[id].jsํŒŒ์ผ์—์„œ

์–ธ์ œ Static Generation์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜์š”?

์›ฌ๋งŒํ•œ ๊ฒฝ์šฐ์— ๋ชจ๋‘ Static Generation์„ ์‚ฌ์šฉํ•˜๊ธธ ๊ถŒ์žฅํ•œ๋‹ค. SSR๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์˜ˆ๋ฅผ๋“ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋™์ ์œผ๋กœ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ํŽ˜์ด์ง€๋“ค์ด Static Generation๋  ์ˆ˜ ์žˆ๋‹ค.

  • ๋งˆ์ผ€ํŒ… ํŽ˜์ด์ง€

  • ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŠธ

  • ์ด์ปค๋จธ์Šค ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ

  • ๋„์›€๋ง

์ด๋Ÿฐ ํŽ˜์ด์ง€๋“ค์€ ํ•œ๋ฒˆ๋งŒ ์ƒ์„ฑํ•ด๋‘๋ฉด ์‚ฌ์šฉํ•˜๋Š”๋™์•ˆ ์ž์ฃผ ๋ณ€ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Static Generationํ•ด๋‘๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

ํŒ๋‹จํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋ฉด ์Šค์Šค๋กœ์—๊ฒŒ ์งˆ๋ฌธํ•ด๋ด๋ผ. ๋‚ด๊ฐ€ ์ด ํŽ˜์ด์ง€๋ฅผ ์œ ์ €์˜ ์š”์ฒญ์ด ์žˆ๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด Static Generation์„ ์‚ฌ์šฉํ•˜๋ผ.

Static Generation์„ Client-side rendering๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„์„ pre-renderingํ•˜์ง€ ์•Š๊ณ  ํด๋ผ์ด์–ธํŠธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

์„œ๋ฒ„์‚ฌ์ด๋“œ๋ Œ๋”๋ง์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ

Next.js๋Š” ๋ชจ๋“  ์š”์ฒญ์— ๋Œ€ํ•ด์„œ ํŽ˜์ด์ง€๋ฅผ pre-rendersํ•œ๋‹ค. ์ด๊ฒƒ์€ CDN์— ์˜ํ•ด ์บ์‹œ๋  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆด์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ํ•˜์ง€๋งŒ pre-rendered๋œ ํŽ˜์ด์ง€๋Š” ํ•ญ์ƒ ์ตœ์‹ ์˜ ์ƒํƒœ๋กœ ์œ ์ง€๋œ๋‹ค.

์„œ๋ฒ„์‚ฌ์ด๋“œ๋ Œ๋”๋ง

SSR์—์„œ๋Š” ํŽ˜์ด์ง€๊ฐ€ ์œ ์ €์˜ ์š”์ฒญ์ด ๋“ค์–ด์™”์„๋•Œ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค. ํŽ˜์ด์ง€๋ฅผ SSR๋กœ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด getServerSideProps ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ๋งค ์š”์ฒญ๋งˆ๋‹ค ์„œ๋ฒ„์— ์˜ํ•ด ์‹คํ–‰๋œ๋‹ค.

๋นˆ๋ฒˆํ•˜๊ฒŒ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ํŽ˜์ด์ง€์—์„œ๋Š” pre-rendersํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค. pre-renders์˜ ํ•ต์‹ฌ์€ ๋นŒ๋“œ ํƒ€์ž„์— ๋ฏธ๋ฆฌ HTML์„ ์ƒ์„ฑํ•˜๋Š”๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

getStaticProps์™€ ๋น„์Šทํ•˜๋‹ค๊ณ  ๋А๋‚„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ฐจ์ด์ ์€ getServerSideProps๋Š” ๋งค ์š”์ฒญ๋งˆ๋‹ค ์„œ๋ฒ„์— ์˜ํ•ด ์‹คํ–‰ ๋œ๋‹ค. getStaticProps๋Š” ๋นŒ๋“œ ํƒ€์ž„์— ์‹คํ–‰๋œ๋‹ค.

์š”์•ฝ

์šฐ๋ฆฌ๋Š” ์—ฌํƒœ๊นŒ์ง€ Next.js์˜ pre-rendering์˜ ๋‘๊ฐ€์ง€ ํ˜•ํƒœ๋ฅผ ์‚ดํŽด๋ณด์•˜๋‹ค.

  1. Static Generation(์ถ”์ฒœ๋จ): HTML์ด ๋นŒ๋“œํƒ€์ž„์— ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋˜๋ฉฐ ๋งค ์š”์ฒญ๋งˆ๋‹ค ์žฌํ™œ์šฉ ๋œ๋‹ค. ํŽ˜์ด์ง€๊ฐ€ Static Generation๋˜๊ฒŒ ๋งŒ๋“œ๋ ค๋ฉด page component์—์„œ getStaticProps (getStaticPaths๋„ ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ฐ™์ด) ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์„œ exportํ•˜๋ฉด ๋œ๋‹ค.

  2. Server side Rendering: HTML์ด ์š”์ฒญ๋ ๋•Œ ์ƒ์„ฑ๋œ๋‹ค. ํŽ˜์ด์ง€๋ฅผ SSRํ•˜๋ ค๋ฉด getServerSideProps ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•˜๊ณ  exportํ•˜๋ผ. SSR์€ Static Generation๋ณด๋‹ค ๋А๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ด ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•˜๋ผ.

Last updated

Was this helpful?