# ์œ ๋‹ˆ๋ฒ„์„ค(Universal) ๋ชจ๋“œ๋ž€?

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Nuxt์˜ ๋ Œ๋”๋ง ๋ชจ๋“œ ์ค‘ ํ•˜๋‚˜์ธ ์œ ๋‹ˆ๋ฒ„์„ค ๋ชจ๋“œ์˜ ๊ฐœ๋…๊ณผ ๋™์ž‘ ์›๋ฆฌ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

# Nuxt ๋ชจ๋“œ

Nuxt๋ฅผ ์ฒ˜์Œ ์„ค์น˜ํ•  ๋•Œ ๋‹ค์Œ์˜ ๋‘ ๊ฐ€์ง€ ๋ Œ๋”๋ง ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Universal
  • Single Page App

rendering-mode

๊ณต์‹๋ฌธ์„œ (opens new window)์—์„œ๋Š” ์œ ๋‹ˆ๋ฒ„์„ค ๋ชจ๋“œ๋ฅผ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง๊ณผ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋„ค๋น„๊ฒŒ์ด์…˜(Client Side Navigation)์˜ ์กฐํ•ฉ์œผ๋กœ ์„ค๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋„ค๋น„๊ฒŒ์ด์…˜์ด๋ž€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํŽ˜์ด์ง€ ๊ฐ„ ์ด๋™์‹œ ํด๋ผ์ด์–ธํŠธ ์ชฝ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์šฐํŒ…์œผ๋กœ ์ด๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์›น ์„œ๋น„์Šค ํŽ˜์ด์ง€๋ฅผ ์ตœ์ดˆ๋กœ ์ ‘๊ทผํ•  ๋•Œ๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง ๋ฐฉ์‹์œผ๋กœ ํ™”๋ฉด์„ ๊ทธ๋ ค์ฃผ์ง€๋งŒ ์ดํ›„์— ํ•ด๋‹น ์„œ๋น„์Šค ๋‚ด์˜ ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•  ๋•Œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์šฐํŒ… ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์œ ๋‹ˆ๋ฒ„์„ค ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค.

์‹ฑ๊ธ€ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ธฐ์กด์˜ Vue๊ฐ€ ์ œ๊ณตํ•˜๋˜ ๋ฐฉ์‹๊ณผ ๋™์ผํ•˜๋‹ˆ ๋ณธ๋ฌธ์—์„œ ๋‹ค๋ฃจ์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

# ์œ ๋‹ˆ๋ฒ„์„ค ๋ชจ๋“œ์˜ ๋“ฑ์žฅ

์ด์ „ ํฌ์ŠคํŠธ์ธ Server Side Rendering์—์„œ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง๊ณผ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์˜ ์ฐจ์ด๋ฅผ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ์š”์•ฝํ•˜๋ฉด ๊ธฐ์กด์˜ ์‹ฑ๊ธ€ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”(Search Engine Optimization) ๋ฌธ์ œ์™€ ํŽ˜์ด์ง€ ๋ Œ๋”๋ง ์†๋„ ๋ฌธ์ œ๋ฅผ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์š”์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

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

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

๊ทธ๋ž˜์„œ Nuxt๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง๊ณผ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์„ ๋ชจ๋‘ ์„ ํƒํ•˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. Nuxt ์•ฑ์„ ์ฒซ ๋ฐฉ๋ฌธํ•  ๋•Œ๋Š” ์„œ๋ฒ„์—์„œ ๊ทธ๋ฆฌ๊ณ  ์ดํ›„ ํŽ˜์ด์ง€ ๊ฐ„ ์ด๋™์€ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ์—์„œ ๊ทธ๋ฆฌ๊ธฐ๋กœ ๋ง์ด์ฃ . ์ด๋ฅผ ์œ„ํ•ด์„œ Nuxt๋Š” ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ํ•˜์ด๋“œ๋ ˆ์ด์…˜(Client Side Hydration)๊ณผ ์ฝ”๋“œ ๋ถ„ํ• (Code Splitting), ํ”„๋ฆฌํŒจ์นญ(Prefetching)์„ ํ™œ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

# ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ํ•˜์ด๋“œ๋ ˆ์ด์…˜

ํ•˜์ด๋“œ๋ ˆ์ด์…˜์€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ •์  HTML์„ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์ด๋‚˜๋ฏน DOM์œผ๋กœ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์œ ๋‹ˆ๋ฒ„์„ค ๋ชจ๋“œ์—์„œ Nuxt ์•ฑ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ตœ์ดˆ ์ ‘๊ทผ์„ ํ•˜๋ฉด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ •์  HTML์„ ๋ฐ›๋Š” ๋™์‹œ์— HTML์„ ๋‹ค์ด๋‚˜๋ฏน DOM์œผ๋กœ ๋ฐ”๊ฟ”์ค„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฒˆ๋“ค์„ ํ•จ๊ป˜ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฐ›์•„์˜จ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฒˆ๋“ค์„ ํ†ตํ•ด ์ด๋ฏธ ๊ทธ๋ ค์ง„ ์ •์  HTML์„ ๋ฆฌ๋ Œ๋”๋ง(Re-rendering) ์—†์ด ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์ด๋‚˜๋ฏน DOM ์ƒํƒœ๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.

# ์ฝ”๋“œ ๋ถ„ํ• 

์ฝ”ํŠธ ๋ถ„ํ• ์€ ๋ง ๊ทธ๋Œ€๋กœ ์ฝ”๋“œ ์ „์ฒด๋ฅผ ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ๋ถ„ํ• ํ•ด์„œ ํ•„์š”์— ๋งž๊ฒŒ ๋ฒˆ๋“ค๋กœ ๋‚˜๋ˆ  ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๋ฒˆ๋“ค๋งŒ ๊ฐ€์ ธ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๋”ฉ ์†๋„๊ฐ€ ๋นจ๋ผ์ง€๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

TIP

์ฐธ๊ณ ๋กœ, ๋‹ค์šด๋กœ๋“œํ•œ ๋ฒˆ๋“ค๋“ค์€ ์บ์‹ฑ์ด ๋ผ์„œ ์žฌํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์— ์žฌ์š”์ฒญํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

# ํ”„๋ฆฌํŒจ์นญ

๊ทธ๋ ‡๋‹ค๋ฉด Nuxt๋Š” ๋ Œ๋”๋ง์„ ๋‹น์žฅ ์ค€๋น„ํ•ด์•ผ ํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ถ„ํ•˜๊ณ  ์žˆ์„๊นŒ์š”? ์‚ฌ์šฉ์ž๊ฐ€ <NuxtLink>๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ด๋™ํ•  ํŽ˜์ด์ง€๋ฅผ ์œ„ํ•œ ๋ Œ๋”๋ง์šฉ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฒˆ๋“ค์„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์•„์˜ฌ๊นŒ์š”? ์„œ๋ฒ„์—์„œ ์™„์ „ํžˆ ๋ Œ๋”๋ง๋œ HTML ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ๋ณด๋‹ค ๋ Œ๋”๋ง์— ํ•„์š”ํ•œ ๋ฒˆ๋“ค๋งŒ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ๋” ๋น ๋ฅด๊ฒ ์ง€๋งŒ ๊ทธ๋ž˜๋„ ๋„คํŠธ์›Œํฌ ์ง€์—ฐ์€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ Nuxt๋Š” ์ข€ ๋” ๋งค๋„๋Ÿฌ์šด ํŽ˜์ด์ง€ ์ด๋™์„ ์œ„ํ•ด์„œ ํ™”๋ฉด์— ๋ณด์ด๋Š” <NuxtLink>๋“ค์— ํ•œํ•ด์„œ ํ•ด๋‹น ํŽ˜์ด์ง€๋“ค์„ ๋ Œ๋”๋งํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ ๋ฏธ๋ฆฌ ์„œ๋ฒ„์— ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ธํ„ฐ์„น์…˜ ์˜ต์ €๋ฒ„(Intersection Observer)๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ทฐํฌํŠธ(Viewport)์— ์ด๋™ํ•  ํŽ˜์ด์ง€ ๋งํฌ๊ฐ€ ๋ณด์ด๊ธฐ๋งŒ ํ•˜๋ฉด ์„œ๋ฒ„์— ๋ฐ”๋กœ ๋ฒˆ๋“ค์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๋•๋ถ„์— ์‚ฌ์šฉ์ž๊ฐ€ ๋งํฌ๋ฅผ ์ธ์ง€ํ•˜๊ณ  ํด๋ฆญํ•˜๊ธฐ๋„ ์ „์— ์ด๋ฏธ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์„ ํ•  ์ค€๋น„๊ฐ€ ๋˜์–ด์žˆ๋Š” ๊ฒƒ์ด์ฃ . ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ์ž๊ฐ€ ํŒจ์นญ์„ ์š”๊ตฌํ•˜๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ํŒจ์นญํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋ฆฌํŒจ์นญ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์˜ ์˜์ƒ์€ ๋ทฐํฌํŠธ์— ์ƒˆ๋กœ์šด <NuxtLink>๊ฐ€ ๋“ฑ์žฅํ•  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ Œ๋”๋ง์— ํ•„์š”ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐ›์•„์˜ค๋Š” ์žฅ๋ฉด์ž…๋‹ˆ๋‹ค. ์ด ๋•๋ถ„์— ๋ณด์‹œ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋น ๋ฅด๊ฒŒ ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. prefetching

์œ„์˜ ๋ฐ๋ชจ ์‚ฌ์ดํŠธ๋Š” Prefetching Demo (opens new window)์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

# ์œ ๋‹ˆ๋ฒ„์„ค ๋ฐฐํฌ

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

์ถ”๊ฐ€์ ์œผ๋กœ, ์œ ๋‹ˆ๋ฒ„์„ค์€ ๋ฐฐํฌ ๋Œ€์ƒ ์„ค์ •์— ๋”ฐ๋ผ ์„œ๋ฒ„ ์ธก์—์„œ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐฉ์‹์ธ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง๊ณผ ๋นŒ๋“œ ๋‹จ๊ณ„์—์„œ ํ”„๋ฆฌ๋ Œ๋”๋ง(Pre-rendering)ํ•˜๋Š” ๋ฐฉ์‹์ธ ์ •์  ์‚ฌ์ดํŠธ ์ œ๋„ค๋ ˆ์ด์…˜(Static Site Generation)์œผ๋กœ ํ•œ ๋ฒˆ ๋” ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง์€ ํด๋ผ์ด์–ธํŠธ ์ธก์œผ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์ด ์˜ฌ ๋•Œ๋งˆ๋‹ค ๋ Œ๋”๋ง์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋“ค์„ ์„œ๋ฒ„์—์„œ asyncData ์™€ fetch๋ฅผ ํ†ตํ•ด ์ƒˆ๋กญ๊ฒŒ ๊ฐ€์ ธ์™€์„œ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.

// nuxt.config.js
export default {
  target: 'server' // ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง
}

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

// nuxt.config.js
export default {
  target: 'static' // ์ •์  ์‚ฌ์ดํŠธ ์ œ๋„ค๋ ˆ์ด์…˜
}

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

๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ Nuxt ๋ฐฐํฌ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# ์ฐธ๊ณ  ์ž๋ฃŒ