Single File Component

Single File Components ์ฒด๊ณ„๋Š” .vue ํŒŒ์ผ๋กœ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค. ํ™•์žฅ์ž .vue ํŒŒ์ผ 1๊ฐœ๋Š” ๋ทฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” 1๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ์™€ ๋™์ผํ•˜๋‹ค.

<!--  ํ™”๋ฉด์— ํ‘œ์‹œํ•  ์š”์†Œ๋“ค์„ ์ •์˜ํ•˜๋Š” ์˜์—ญ -->
<template>
<!-- HTML ํƒœ๊ทธ ๋‚ด์šฉ -->
</template>
<!-- ๋ทฐ ์ปดํฌ๋„ŒํŠธ์˜ ๋‚ด์šฉ์„ ์ •์˜ํ•˜๋Š” ์˜์—ญ -->
<script>
exports default{
  // ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ๋‚ด์šฉ
}
</script>
<!-- template์— ์ถ”๊ฐ€ํ•œ HTML ํƒœ๊ทธ์˜ CSS ์Šคํƒ€์ผ์„ ์ •์˜ํ•˜๋Š” ์˜์—ญ -->
<style>
  /* CSS ์Šคํƒ€์ผ ๋‚ด์šฉ */
</style>

Vue CLI

Single File Component ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” .vue ํŒŒ์ผ์„ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์˜ ํŒŒ์ผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ์›นํŒฉ(webpack)์ด๋‚˜ Browserify์™€ ๊ฐ™์€ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์›นํŒฉ์€ ์›น ์•ฑ์˜ ์ž์›(HTML, CSS, ์ด๋ฏธ์ง€)๋“ค์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ๋กœ ๋ณ€ํ™˜ํ•ด ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ์›น ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œ์ผœ ์ฃผ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ์ด๋‹ค. ๋ทฐ ๊ฐœ๋ฐœ์ž๋“ค์ด ํŽธํ•˜๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก CLI(Command Line Interface) ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ

$ vue create <project_name>
Vue CLI v3.11.0
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Update available: 4.0.4  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
? Please pick a preset: (Use arrow keys)
โฏ default (babel, eslint)
  Manually select features

์—ฌ๊ธฐ์„œ default๋ฅผ ์„ ํƒํ•˜์—ฌ ์ƒ์„ฑํ•˜๊ฒŒ ๋˜๋ฉด babel๊ณผ eslint๊ฐ€ ์„ค์น˜๋œ๋‹ค. Manually select features๋ฅผ ์„ ํƒํ•˜๊ฒŒ ๋˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด vuex, vue-router ๋“ฑ ๋ช‡๊ฐ€์ง€๋ฅผ ๋” ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

? Please pick a preset: Manually select features
? Check the features needed for your project: (Press <space> to select, <a> to t
oggle all, <i> to invert selection)
โฏโ—‰ Babel
 โ—ฏ TypeScript
 โ—ฏ Progressive Web App (PWA) Support
 โ—ฏ Router
 โ—ฏ Vuex
 โ—ฏ CSS Pre-processors
 โ—‰ Linter / Formatter
 โ—ฏ Unit Testing
 โ—ฏ E2E Testing

ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‹ค๊ฐ€ ์ถ”๊ฐ€์ ์œผ๋กœ plugin์„ ์„ค์น˜ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์—๋Š” add๋ฅผ ํ†ตํ•ด ํ•  ์ˆ˜ ์žˆ๋‹ค.

default ๋ชจ๋“œ๋ฅผ ์„ ํƒํ•ด ์„ค์น˜ํ•˜๊ฒŒ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

.node_modules/
public/
        favicon.ico
        index.html
src/
    assets/
        logo.png
    components/
        HelloWorld.vue
    App.vue
    main.js
.gitignore
babel.config.js
package-lock.json
package.json
README.md

์ปดํฌ๋„ŒํŠธ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” src/components ํด๋”์—์„œ ๊ด€๋ฆฌํ•œ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ ธ์„œ ๊ธฐ๋Šฅ๋ณ„๋กœ ๊ด€๋ฆฌ๋ฅผ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” components/๊ธฐ๋Šฅ/<์ปดํฌ๋„ŒํŠธ๋ช…>.vue (components/login/LoginForm.vue)์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

$ vue add <plugin>

์˜ˆ๋ฅผ ๋“ค์–ด์„œ axios ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•ด๋ณผ๊ฒƒ์ด๋‹ค.

$ vue add axios
๐Ÿ“ฆ  Installing vue-cli-plugin-axios...

+ vue-cli-plugin-axios@0.0.4
added 1 package from 1 contributor in 4.648s
โœ”  Successfully installed plugin: vue-cli-plugin-axios


๐Ÿš€  Invoking generator for vue-cli-plugin-axios...
๐Ÿ“ฆ  Installing additional dependencies...

added 5 packages from 8 contributors in 5.059s
โš“  Running completion hooks...

โœ”  Successfully invoked generator for plugin: vue-cli-plugin-axios
   The following files have been updated / added:

     src/plugins/axios.js
     package-lock.json
     package.json
     src/main.js

   You should review these changes with git diff and commit them.

axios ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์„ค์น˜๋˜๊ณ  ๋‚œ ํ›„ ์ˆ˜์ •๋œ ํŒŒ์ผ๊ณผ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ํŒŒ์ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์›นํŒฉ ์„ค์ • ํŒŒ์ผ

vue-cli 3.x ์—์„œ๋Š” ์›นํŒฉ ์„ค์ •ํŒŒ์ผ์„ ๋…ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค. 3.x์—์„œ๋Š” ์„ค์ •์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” root ๋””๋ ‰ํ† ๋ฆฌ์— vue.config.js ํŒŒ์ผ์„ ์„ค์ •ํ•˜๊ณ  ๋‚ด์šฉ์„ ์ž‘์„ฑํ•ด์ค€๋‹ค.

// vue.config.js
module.exports = {
  // ์—ฌ๊ธฐ์— ์˜ต์…˜์„ ์ž‘์„ฑํ•ด์ค€๋‹ค.
}

vue ui

Vue-CLI3 UI๋ฅผ ํ†ตํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

$ vue ui

์œ„์™€ ๊ฐ™์ด ์‹คํ–‰ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ๋งค๋‹ˆ์ €๊ฐ€ localhost:8000์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ ๋งค๋‹ˆ์ € ์œ„์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฏธ ์ƒ์„ฑ๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ ๊ด€๋ฆฌ ํฌ์ธํŠธ๋กœ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ์‹คํ–‰

$ npm run serve

build

์ƒ์šฉ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ๋นŒ๋“œ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

$ npm run build

๋นŒ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด Vue CLI๊ฐ€ ์›นํŒฉ์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ์†Œ์Šค ํŒŒ์ผ๋“ค์„ ๋ฒˆ๋“ค๋งํ•˜์—ฌ dist ๋””๋ ‰ํ† ๋ฆฌ์— ๋„ฃ์–ด์ค€๋‹ค. dist ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ์›นํŒฉ์ด ๋ฒˆ๋“ค๋งํ•œ ํŒŒ์ผ๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ํŒŒ์ผ๋“ค์€ ์ƒ์šฉ ๋ฐฐํฌ์— ์ ํ•ฉํ•˜๋„๋ก ์›นํŒฉ์ด ์ตœ์ ํ™” ํ•ด๋†“์€ ๊ฒƒ์ด๋‹ค.

์ฐธ์กฐ

Last updated

Was this helpful?