Nuxt ๋์๋ณด๋ ํ๋ก์ ํธ ์๋ฆฌ์ฆ (1): ํ๋ก์ ํธ ์์ฑ ๋ฐ ์ด๊ธฐ ์ค์
๋์๋ณด๋ ๊ฐ๋ฐ์ ์ฒซ๊ฑธ์์ ์์ ์ ์ธ ํ๋ก์ ํธ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ๊ฒ์ ๋๋ค. Nuxt 3์ ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ค์นํ๊ณ ๊ธฐ๋ณธ ํด๋ ๊ตฌ์กฐ๋ฅผ ์ก์๋ณด๊ฒ ์ต๋๋ค.
1. Nuxt ํ๋ก์ ํธ ์ด๊ธฐํ
ํฐ๋ฏธ๋์ ์ด๊ณ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ ์๋ก์ด Nuxt ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
npx nuxi@latest init my-dashboard
cd my-dashboard
npm installํ๋ก์ ํธ๊ฐ ์์ฑ๋๋ฉด ์ ์์ ์ผ๋ก ์๋ํ๋์ง ํ์ธํฉ๋๋ค.
npm run dev2. ํ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
๋์๋ณด๋ ๊ตฌ์ถ์ ํ์ํ Naive UI, UnoCSS, Pinia๋ฅผ ์ค์นํฉ๋๋ค.
npm install -D naive-ui unocss @unocss/nuxt
npm install pinia @pinia/nuxt3. Nuxt ์ค์ ์ ๋ฐ์ดํธ (nuxt.config.ts)
์ค์นํ ๋ชจ๋๋ค์ Nuxt๊ฐ ์ธ์ํ๋๋ก ์ค์ ์ ๋ณ๊ฒฝํฉ๋๋ค.
// nuxt.config.ts
export default defineNuxtConfig({
modules: [
'@unocss/nuxt',
'@pinia/nuxt',
],
// Naive UI๋ SSR ์ ์คํ์ผ ์ฃผ์
์ค์ ์ด ํ์ํฉ๋๋ค
build: {
transpile: ['naive-ui', 'vueuc', '@css-render/vue3-ssr']
},
vite: {
optimizeDeps: {
include: ['naive-ui', 'vueuc', 'date-fns-tz/formatInTimeZone']
}
}
})4. ํด๋ ๊ตฌ์กฐ ์ค๊ณ
๋๊ท๋ชจ ํ๋ก์ ํธ๋ก ํ์ฅ๋ ๊ฒ์ ๋๋นํ์ฌ ๋ฏธ๋ฆฌ ํด๋ ๊ตฌ์กฐ๋ฅผ ์ ์ํฉ๋๋ค.
components/: ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ์กฐ๊ฐ๋ค.layouts/: ๋์๋ณด๋ ๋ ์ด์์(์ฌ์ด๋๋ฐ ํฌํจ).pages/: ์ค์ ์ฃผ์์ ๋งค์นญ๋๋ ํ์ด์ง๋ค.stores/: Pinia ์ํ ๊ด๋ฆฌ ํ์ผ๋ค.plugins/: Naive UI ํ๋ฌ๊ทธ์ธ ์ค์ .
5. ๊ฒฐ๋ก
์ด์ ๋์๋ณด๋ ์ ์์ ์ํ ๋ชจ๋ ์ค๋น๊ฐ ๋๋ฌ์ต๋๋ค. ๋ค์ ๊ธ์์๋ UnoCSS๋ฅผ ํตํด ์คํ์ผ ์์คํ ์ ๊ตฌ์ถํ๊ณ , Naive UI์ ํ ๋ง๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.