๐ฏ ๋ชฉํ
- ๋ฉ๊ฐ๊ณต ๋ฉ์ธ ํ์ด์ง ์ฌ๊ตฌํ์ ์ํ Vue ํ๋ก์ ํธ ํ๊ฒฝ ๊ตฌ์ฑ
- ํด๋ ๊ตฌ์กฐ ์ค๊ณ ๋ฐ ๊ธฐ๋ณธ ๋ผ์ฐํ ์ค๋น
- ๊ธ๋ก๋ฒ ์คํ์ผ, ์ปดํฌ๋ํธ ๋ถ๋ฆฌ ์ ๋ต ์๋ฆฝ
๐ ์ถ์ฒ ํด๋ ๊ตฌ์กฐ
vue2-megagong/
โโโ public/
โโโ src/
โ โโโ assets/ # ๊ณตํต ์คํ์ผ(css/scss), ์ด๋ฏธ์ง ๋ฑ
โ โโโ components/ # ๊ณตํต ์ปดํฌ๋ํธ
โ โโโ views/ # ํ์ด์ง ๋จ์ ๋ทฐ ์ปดํฌ๋ํธ
โ โโโ router/ # Vue Router ์ค์
โ โโโ store/ # Vuex (์ถํ ํตํฉ)
โ โโโ utils/ # axios ๋ฑ ์ ํธ
โ โโโ App.vue
โ โโโ main.js
โโโ .env
โโโ package.json
โโโ vue.config.js
๐ฆ 1. ํ๋ก์ ํธ ์์ฑ
vue create vue2-megagong
# ์ ํ โ Manually select features
# ์ ํ โ Babel, Router, Vuex, CSS Pre-processors(Sass/SCSS) ๋ฑ ํฌํจ
# ์ ํ โ 2.x, Use history mode, Prettier, Lint on save
# ๋ง์ฝ ํ์ฌ ํด๋์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค๋ฉด vue create .
cd vue2-megagong
npm run serve

๐ 2. ๊ธฐ๋ณธ ์ค์ ์์
1) vue.config.js (API ํ๋ก์)
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://localhost:8080', // ๋ฐฑ์๋ API ์๋ฒ ์ฃผ์
changeOrigin: true,
},
},
},
};
2) main.js
import Vue from 'vue';
import App from './App.vue';
import router from './router';
import store from './store';
import './assets/base.scss';
Vue.config.productionTip = false;
new Vue({
router,
store,
render: (h) => h(App),
}).$mount('#app');
3) assets/base.scss
body {
font-family: 'Noto Sans KR', sans-serif;
margin: 0;
background: #f8f8f8;
color: #222;
}
a {
color: inherit;
text-decoration: none;
}
4) .prettierrc ํ์ผ ์์ฑ (Prettier ์ค์ )
๋ฃจํธ ํด๋์ .prettierrc ํ์ผ์ ์ถ๊ฐํ๊ณ ๋ค์ ๋ด์ฉ์ ์
๋ ฅํ์ธ์:
{
"singleQuote": false,
"semi": true,
"trailingComma": "es5",
"printWidth": 100,
"tabWidth": 2
}
5) .eslintrc.js ํ์ผ ์์
module.exports = {
root: true,
env: {
node: true,
},
extends: ["plugin:vue/essential", "eslint:recommended", "plugin:prettier/recommended"],
parserOptions: {
parser: "@babel/eslint-parser",
},
rules: {
"prettier/prettier": "off", // ์ถ๊ฐ
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
},
};
๐งฉ 3. ์ด๊ธฐ ํ์ด์ง ๊ตฌ์ฑ (router/index.js)
import Vue from 'vue';
import Router from 'vue-router';
import HomePage from '@/views/HomePage.vue';
Vue.use(Router);
export default new Router({
mode: 'history',
routes: [
{
path: '/',
name: 'Home',
component: HomePage,
},
],
});
โ 4. ์ฒซ View ์ปดํฌ๋ํธ ์์ฑ
<!-- src/views/HomePage.vue -->
<template>
<div class="home">
<h1>๋ฉ๊ฐ๊ณต ๋ฉ์ธ ํ์ด์ง ์์</h1>
</div>
</template>
<script>
export default {
name: 'HomePage',
};
</script>
๐ฌ ๋๊ธ
โป ๋ก๊ทธ์ธ ํ ๋๊ธ์ ์์ฑํ ์ ์์ต๋๋ค.