์ž‘์„ฑ: 2026-03-04 05:39:06์ˆ˜์ •: 2026-03-04 05:39:06

Nuxt.js ํ•ต์‹ฌ ๊ฐœ๋…: ์ž๋™ ์ž„ํฌํŠธ์™€ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ

Nuxt.js๋Š” "์„ค์ •๋ณด๋‹ค ๊ด€์Šต(Convention over Configuration)"์„ ์ค‘์‹œํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ •ํ•ด์ง„ ํด๋” ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅด๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์ˆ˜๋งŽ์€ ๋ณต์žกํ•œ ์„ค์ •์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ด ์ค๋‹ˆ๋‹ค.


1. ๋งˆ๋ฒ• ๊ฐ™์€ ์ž๋™ ์ž„ํฌํŠธ (Auto-imports)

Nuxt์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” import๋ฌธ์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

  • Components: components/ ํด๋”์˜ Vue ์ปดํฌ๋„ŒํŠธ ์ž๋™ ์ž„ํฌํŠธ.
  • Composables: composables/ ํด๋”์˜ ํ•จ์ˆ˜ ์ž๋™ ์ž„ํฌํŠธ.
  • Vue & Nuxt API: ref, computed, useFetch ๋“ฑ ํ•„์ˆ˜ API ์ž๋™ ์ž„ํฌํŠธ.

2. ํ•„์ˆ˜ ๋””๋ ‰ํ† ๋ฆฌ ์—ญํ• 

ํด๋”๋ช…์—ญํ• 
pages/ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. index.vue๋Š” / ๊ฒฝ๋กœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
components/UI ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋‹ด์Šต๋‹ˆ๋‹ค. ํด๋” ๊ตฌ์กฐ์— ๋”ฐ๋ผ ์ด๋ฆ„์ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.
composables/์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(๊ณตํ†ต ํ•จ์ˆ˜)์„ ๋‘ก๋‹ˆ๋‹ค.
server/API ์—”์ง„(Nitro)์ด ๋™์ž‘ํ•˜๋Š” ๊ณณ์ž…๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ API ์„œ๋ฒ„ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
assets/๋นŒ๋“œ ๋„๊ตฌ(Vite)๊ฐ€ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์Šคํƒ€์ผ, ์ด๋ฏธ์ง€ ํŒŒ์ผ๋“ค.
public/๋กœ๋ด‡ ํŒŒ์ผ(robots.txt), ํŒŒ๋น„์ฝ˜ ๋“ฑ ์ •์  ํŒŒ์ผ์„ ์ง์ ‘ ์„œ๋น™ํ•ฉ๋‹ˆ๋‹ค.

3. App.vue vs Pages

  • app.vue: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์—”ํŠธ๋ฆฌ ํฌ์ธํŠธ(์ตœ์ƒ์œ„)์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ํŽ˜์ด์ง€์—์„œ ๊ณตํ†ต์œผ๋กœ ๋ณด์ผ ๋ ˆ์ด์•„์›ƒ์ด๋‚˜ ์„ค์ •(Naive UI์˜ Config Provider ๋“ฑ)์„ ๋„ฃ๊ธฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • <NuxtPage />: pages/ ํด๋”์˜ ๋‚ด์šฉ์ด ๋ Œ๋”๋ง๋˜๋Š” ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค.

4. ๊ฒฐ๋ก 

Nuxt๋Š” ์ •ํ•ด์ง„ ์œ„์น˜์— ํŒŒ์ผ์„ ๋‘๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ๋ฅผ ์ตํžˆ๋Š” ๊ฒƒ์ด Nuxt ๋งˆ์Šคํ„ฐ์˜ ์ฒซ๊ฑธ์Œ์ž…๋‹ˆ๋‹ค.