๐Ÿ“ 12์ฃผ์ฐจ ์œ„ํด๋ฆฌ ํŽ˜์ดํผ ๋ฏธ์…˜

pjw__98ยท2024๋…„ 1์›” 7์ผ
1
post-thumbnail

๋ฆฌ์•กํŠธ๋งŒ ์‚ฌ์šฉํ•  ๋•Œ์™€ ๋น„๊ตํ•ด Next.js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

๊ฐ„ํŽธํ•œ ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ:
React๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด์ง€๋งŒ ํ”„๋กœ์ ํŠธ์˜ ํŠน์ • ๊ตฌ์กฐ๋ฅผ ๊ทœ์ •ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
Next.js๋Š” ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ๋ฐ ๊ตฌ์„ฑ๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” React๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋” ์‰ฝ๊ฒŒ ์„ค์ •ํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค.

์„œ๋ฒ„์ธก ๋ Œ๋”๋ง(SSR):
React๋Š” ์ฃผ๋กœ ํด๋ผ์ด์–ธํŠธ์ธก ๋ Œ๋”๋ง์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. ์ฆ‰, ์›นํŽ˜์ด์ง€์˜ ์ดˆ๊ธฐ ๋ Œ๋”๋ง์ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.
Next.js๋Š” ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง์„ ์ง€์›ํ•˜๋ฏ€๋กœ ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์— ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋ง๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ๊ณผ SEO๊ฐ€ ํ–ฅ์ƒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž๋™ ์ฝ”๋“œ ๋ถ„ํ• :
Next.js๋Š” ์ž๋™ ์ฝ”๋“œ ๋ถ„ํ•  ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, JavaScript ๋ฒˆ๋“ค์„ ํ•„์š”์— ๋”ฐ๋ผ ๋กœ๋“œ๋˜๋Š” ๋” ์ž‘์€ ๋ฉ์–ด๋ฆฌ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์ด ๋ณด๊ณ  ์žˆ๋Š” ํŠน์ • ํŽ˜์ด์ง€์— ํ•„์š”ํ•œ ์ฝ”๋“œ๋งŒ ๋‹ค์šด๋กœ๋“œํ•˜๋ฏ€๋กœ ํŽ˜์ด์ง€ ๋กœ๋“œ ์†๋„๊ฐ€ ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค.

๋ผ์šฐํŒ…:
React์—๋Š” ๋‚ด์žฅ๋œ ๋ผ์šฐํŒ…์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์ด๋Ÿฌํ•œ ๋ชฉ์ ์œผ๋กœ ์ถ”๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
Next.js์—๋Š” ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ… ์‹œ์Šคํ…œ์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด ์ถ”๊ฐ€ ๋ผ์šฐํŒ… ๊ตฌ์„ฑ ์—†์ด ์ง๊ด€์ ์ด๊ณ  ์‰ฝ๊ฒŒ ๊ฒฝ๋กœ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •์  ์‚ฌ์ดํŠธ ์ƒ์„ฑ(SSG):
Next.js๋Š” ๋นŒ๋“œ ์‹œ ์ฝ˜ํ…์ธ ๊ฐ€ ์‚ฌ์ „ ๋ Œ๋”๋ง๋˜๋Š” ์ •์  ์‚ฌ์ดํŠธ ์ƒ์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. HTML์ด ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋˜์–ด CDN(Content Delivery Network)์—์„œ ์ง์ ‘ ์ œ๊ณต๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ๋งค์šฐ ๋นจ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

API ๊ฒฝ๋กœ:
Next.js๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด API ๊ฒฝ๋กœ๋ฅผ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ”„๋ŸฐํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ์„œ๋ฒ„๋ฆฌ์Šค ๊ธฐ๋Šฅ๊ณผ ๋ฐฑ์—”๋“œ ๊ธฐ๋Šฅ์„ ์›ํ™œํ•˜๊ฒŒ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์š”์•ฝ

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

Next.js์—์„œ SSR์„ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •๊ณผ hydration์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”.

Next.js์˜ ์„œ๋ฒ„์ธก ๋ Œ๋”๋ง(SSR):
์ตœ์ดˆ ์š”์ฒญ:
์‚ฌ์šฉ์ž๊ฐ€ Next.js ์•ฑ์˜ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ์„ ํ•˜๋ฉด ์„œ๋ฒ„๋Š” ํ•ด๋‹น ์„œ๋ฒ„ ์ธก ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ•ด๋‹น ํŽ˜์ด์ง€์— ๋Œ€ํ•œ HTML์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ฒ„์ธก ๋ Œ๋”๋ง(SSR):
์„œ๋ฒ„๋Š” ์„œ๋ฒ„์—์„œ React ๊ตฌ์„ฑ ์š”์†Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ HTML ์ฝ˜ํ…์ธ ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ „์ฒด HTML ํŽ˜์ด์ง€๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋ƒ…๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTML์„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค:
ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์™„์ „ํžˆ ๋ Œ๋”๋ง๋œ HTML ํŽ˜์ด์ง€๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์„œ๋ฒ„์—์„œ ์ƒ์„ฑ๋œ ์ •์  ์ฝ˜ํ…์ธ ์™€ ๋™์  ์ฝ˜ํ…์ธ ๊ฐ€ ๋ชจ๋‘ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ˆ˜๋ถ„ ๊ณต๊ธ‰:
HTML๊ณผ ํ•จ๊ป˜ ์„œ๋ฒ„๋Š” React ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ JavaScript ๋ฒˆ๋“ค์˜ ์ตœ์†Œํ™”๋œ ๋ฒ„์ „๋„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ์ธก JavaScript ๋ฒˆ๋“ค์ด ๋„์ฐฉํ•˜๋ฉด ์ด๋ฅผ ๋Œ€์‹ ํ•˜๊ณ  React๋Š” ์ •์  HTML์„ ๋‹ค์‹œ ์ˆ˜ํ™”ํ•˜์—ฌ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  ํŽ˜์ด์ง€๋ฅผ ์™„์ „ํžˆ ๋Œ€ํ™”ํ˜•์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ˆ˜๋ถ„ ๊ณต๊ธ‰:
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋Œ€์‹ ํ•จ:
์ดˆ๊ธฐ HTML์ด ๋กœ๋“œ๋œ ํ›„ JavaScript ๋ฒˆ๋“ค์ด ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
React๋Š” ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋ง๋œ HTML๊ณผ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ Œ๋”๋ง๋œ HTML์„ ๋น„๊ตํ•˜๊ณ  ์ฐจ์ด์ ์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

์žฌ์ˆ˜ํ™” ๊ณผ์ •:
React๋Š” ํŽ˜์ด์ง€์˜ ๊ธฐ์กด HTML ์š”์†Œ์— ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ๋ฐ ๊ธฐํƒ€ ํด๋ผ์ด์–ธํŠธ ์ธก ๊ธฐ๋Šฅ์„ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
๋ชจ๋“  ๋Œ€ํ™”ํ˜• ๊ธฐ๋Šฅ, ์ƒํƒœ ๊ด€๋ฆฌ ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก ๋ผ์šฐํŒ…์€ ์ด์ œ ๋ฆฌํ•˜์ด๋“œ๋ ˆ์ด์…˜๋œ React ๊ตฌ์„ฑ ์š”์†Œ์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

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

์š”์•ฝ

Next.js์˜ SSR์—๋Š” ์„œ๋ฒ„๊ฐ€ ํŽ˜์ด์ง€์˜ ์ดˆ๊ธฐ HTML์„ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ๋ณด๋‚ธ ๋‹ค์Œ ํด๋ผ์ด์–ธํŠธ ์ธก JavaScript๋กœ ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ์ƒ์„ฑํ•˜๋Š” ์ž‘์—…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” ์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง๊ณผ ํด๋ผ์ด์–ธํŠธ ์ธก ์ƒํ˜ธ ์ž‘์šฉ์˜ ์ด์ ์„ ๋ชจ๋‘ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์ดˆ๊ธฐ ํŽ˜์ด์ง€ ๋กœ๋“œ ์†๋„๊ฐ€ ๋นจ๋ผ์ง€๊ณ  ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ์›ํ™œํ•ด์ง‘๋‹ˆ๋‹ค.

๐Ÿ‘๐Ÿป Reference

chatGPT

profile
โ˜„๏ธ

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