현재 Vue.js 를 활용한 프론트엔드 개발과 Node.js 를 활용한 백엔드를 진행하고 있다. 기존의 .Net Web Framework 와 html, css, jQuery 를 이용한 레거시코드들을 프로젝트로 활용했었고, 이번 프로젝트의 경우 내 주도권이 큰 관계로 Vue.js 를 적용하였다. 이번 포스팅을 통해 직접 실무과정에서 겪었었던 고민들이나 공부했었던 다양한 포스팅들을 정리해보고자 한다.
# npm install --save @vue/cli
# vue create [project name]
* Manually select features
* Bable, Linter / Formatter, Unit Testing
* ESLing + Prettier
* Jest
* In dedicated config files..
여러 포스팅들을 보고 위와 같은 순서대로 진행했엇는데 타 블로그를 통해 꼭 확인하고 선택하길 바란다. 더불어 Vue 2.x 보다는 Vue 3.x를 추천하는데 여러가지 이유가 있지만 무엇보다 typescript 를 정식 지원한다는 점이 매우 좋은 것 같다.
module.exports = {
devServer : {
overlay : false
}
}
module.exports = {
...
rules: {
...
"prettier/prettier": ['error', {
singleQuote: true,
semi: true,
useTabs: true,
tabWidth: 2,
trailingComma: 'all',
printWidth: 80,
bracketSpacing: true,
arrowParens: 'avoid',
}]
},
...
}
import
과정에서 상대 경로 찾기가 불편{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"~/*": [
"./*"
],
"@/*": [
"./src/*"
],
}
},
"exclude": [
"node_modules",
"dist"
]
}
import Vue from "vue";
import VueRouter from "vue-router";
Vue.use(VueRouter); // 플러그인 실행
export default new VueRouter(); // VurRouter 인스턴스 생성
또는
// URL splitting Example Code
import LoginPage from '@/view/LoginPage.vue';
import SignupPage from '@/view/SignupPage.vue';
...
export default new VueRouter({
routes: [
{
path: '/login',
component: LoginPage,
},
{
path: '/signup',
component: SignupPage,
},
]
});
import router from "@/router/index";
// ... import modules(middleware)
new Vue({
...,
router,
})
2-1
에 소개한 splitting 방식과는 다르게 아래와 같이 사용할 수 있음...
routes: [
{
path: '/login',
component: () => import ('@/views/LoginPage.vue'),
},
{
path: '/signup',
component: () => import ('@/views/SignupPage.vue'),
},
]
...
다음과 같이 설정시 화살표 함수로 코드가 스플리팅 된다.
...
routes: [
{
path: '/',
redirect: '/login',
},
{
path: '/login',
component: () => import ('@/views/LoginPage.vue'),
},
{
path: '/signup',
component: () => import ('@/views/SignupPage.vue'),
},
]
...
...
routes: [
...
{
path: '*',
component: () => import ('@/views/NotFoundPage.vue'),
},
]
...
...
export default new VueRouter({
mode: 'history',
routes: [
...
]
});
mode : history
를 의 경우 URI 에서 #
가 사라지게 됨#
가 붙어있는데 이유는 아래와 같다