ํˆฌ์ž… ์˜ˆ์ • ์ค‘์ธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•ž๋‹จ์ด Nuxt.js๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์„œ
ํ˜ผ์ž ๊ณต๋ถ€ํ•ด๋ณผ ๊ฒธ ํ”„๋กœ์ ํŠธ create ๊ณผ์ •๋ถ€ํ„ฐ ๊ฐ„๋‹จํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

Nuxt.js ?.?

Nuxt.js๋Š” Vue.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ, ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR), ์ •์  ์‚ฌ์ดํŠธ ์ƒ์„ฑ(SSG), ๊ทธ๋ฆฌ๊ณ  ๋‹จ์ผ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(SPA)์„ ์ง€์›ํ•œ๋‹ค.

Nuxt.js์˜ ํŠน์ง• (Next.js์˜ ํŠน์ง•๊ณผ ์œ ์‚ฌ)

  • ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ Œ๋”๋ง(SSR)
  • ์ •์  ์‚ฌ์ดํŠธ ์ƒ์„ฑ(SSG)
  • ๊ฐ•๋ ฅํ•œ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ
  • ์ž๋™ ์ฝ”๋“œ ๋ถ„ํ• 
  • SEO ์ตœ์ ํ™”

Nuxt.js ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ๋ฐฉ๋ฒ•

1๋‹จ๊ณ„: Nuxt.js ์„ค์น˜

Nuxt.js ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด, ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰:

npx create-nuxt-app <project-name>

๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ช‡ ๊ฐ€์ง€ ์„ค์ •์„ ์„ ํƒํ•ด์•ผํ•˜๋Š”๋ฐ

  1. Project name: ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”.
  2. Programming language: JavaScript ๋˜๋Š” TypeScript ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์„ธ์š”.
  3. Package manager: npm ๋˜๋Š” yarn ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์„ธ์š”.
  4. UI framework: None, Bootstrap, Vuetify, Tailwind CSS ๋“ฑ ์›ํ•˜๋Š” UI ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ ํƒํ•˜์„ธ์š”.
  5. Nuxt.js modules: Axios, PWA, Content ๋“ฑ ํ•„์š”ํ•œ ๋ชจ๋“ˆ์„ ์„ ํƒํ•˜์„ธ์š”.
  6. Linting tools: ESLint, Prettier ๋“ฑ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜์„ธ์š”.
  7. Testing framework: None, Jest, AVA ๋“ฑ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ ํƒํ•˜์„ธ์š”.
  8. Rendering mode: Universal (SSR/SSG) ๋˜๋Š” Single Page App ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์„ธ์š”.
  9. Deployment target: Server (Node.js hosting) ๋˜๋Š” Static (Static/JAMStack hosting) ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์„ธ์š”.
  10. Development tools: tsconfig.json ๋˜๋Š” None์„ ์„ ํƒํ•˜์„ธ์š”.

๋ผ๋Š” ์„ ํƒ ์ค‘ ๊ฐ€์žฅ ๋…ธ๋ฉ€ํ•œ ํŒจํ‚ค์ง• ๊ตฌ์„ฑ์„ ์ถ”์ฒœํ•˜์ž๋ฉด..

๋…ธ๋ฉ€ ๊ฐ€์ด๋“œ

  1. Project name: ํ”„๋กœ์ ํŠธ ์ด๋ฆ„
  2. Programming language: TypeScript
  3. Package manager: npm
  4. UI framework: Tailwind CSS
  5. Nuxt.js modules: Axios
  6. Linting tools: ESLint
  7. Testing framework: Jest
  8. Rendering mode: Universal (SSR/SSG)
  9. Deployment target: Static (Static/JAMStack hosting)
  10. Development tools: tsconfig.json

์ด ์„ค์ •์„ ์™„๋ฃŒํ•˜๋ฉด Nuxt.js ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋จ.

2๋‹จ๊ณ„: ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

<project-name>/
โ”œโ”€โ”€ assets/
โ”œโ”€โ”€ components/
โ”œโ”€โ”€ layouts/
โ”œโ”€โ”€ pages/
โ”œโ”€โ”€ plugins/
โ”œโ”€โ”€ static/
โ”œโ”€โ”€ store/
โ”œโ”€โ”€ nuxt.config.js
โ””โ”€โ”€ package.json

3๋‹จ๊ณ„: ๊ธฐ๋ณธ ํŽ˜์ด์ง€ ์ƒ์„ฑ

pages ๋””๋ ‰ํ† ๋ฆฌ์— index.vue ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€:

<template>
  <div>
    <h1>Welcome to Nuxt.js!</h1>
  </div>
</template>
 
<script>
export default {
  name: 'IndexPage'
}
</script>
 
<style>
h1 {
  color: #35495e;
  font-family: 'Arial', sans-serif;
}
</style>

4๋‹จ๊ณ„: ๊ฐœ๋ฐœ ์„œ๋ฒ„ ์‹คํ–‰

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰:

npm run dev

๋ธŒ๋ผ์šฐ์ €๋ฅผ ์—ด๊ณ  http://localhost:3000์œผ๋กœ ์ด๋™ํ•˜์—ฌ Nuxt.js ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ๋™์ž‘ ํ•˜๋Š”์ง€ ํ™•์ธ.