반응형
소스코드 첨부합니다(https://github.com/jaeho310/vue-tutorial)
목차
이번 게시글에서는 vue router를 사용하여 화면이동을 하는 방법에 대해 정리합니다.
프로젝트 구조
디렉토리 구조는 다음과 같습니다.
.
|-- App.vue
|-- assets
| |-- logo.png
| `-- logo.svg
|-- components
| |-- Create.vue
| |-- Home.vue
| |-- Table.vue
| `-- core
| |-- AppBar.vue
| |-- Footer.vue
| `-- View.vue
|-- main.js
|-- plugins
| `-- vuetify.js
`-- router
`-- index.js
1. router/index.js
router 디렉토리를 만들고 그 안에 index.js를 만들어 줍니다.
import Vue from 'vue';
import Router from 'vue-router';
import Home from '@/components/Home'
import Create from '@/components/Create'
import Table from '@/components/Table'
Vue.use(Router); // vue 라우터 사용
export default new Router({
mode: 'history', // history 모드를 사용할시 url에 #이 들어가지 않습니다.
routes:[
{
path:'/'
,component:Home
},
{
path:'/table'
,component:Table
},
{
path:'/create'
,component:Create
},
]
})
Reouter라는 객체를 export 시켜주는 자바스크립트 파일입니다.
'/' 라는 url이 오면 Home이라는 컴포넌트를
'/table' 라는 url이 오면 Table이라는 컴포넌트를 주기로 약속해줍니다.
2. main.js
import Vue from 'vue'
import App from './App.vue'
import vuetify from './plugins/vuetify'
import router from './router'
Vue.config.productionTip = false
new Vue({
vuetify,
router,
render: h => h(App)
}).$mount('#app')
main.js에서는 방금 export한 router/index.js를 가져와서 Vue객체에 넣어줍니다.
3. core/View.vue
<template>
<router-view />
</template>
<script>
export default {
}
</script>
<style>
</style>
1, 2번 작업이 완료되었다면 router-view라는 태그를 사용할 수 있습니다.
core/View.vue 파일에 router-view파일을 추가해줍니다.
이제 View.vue파일에 html은 router/index.js에서 설정한 url과 컴포넌트에 맞게 바뀌게 됩니다.
4. Home.vue
<template>
<p>THIS IS HOME</p>
</template>
<script>
export default {
}
</script>
<style>
</style>
router/index.js에서 사용하는 component를 만들어줍니다.
5. Table.vue
<template>
<p>THIS IS TABLE</p>
</template>
<script>
export default {
}
</script>
<style>
</style>
router/index.js에서 사용하는 component를 만들어줍니다.
6. Create.vue
<template>
<p>THIS IS CREATE</p>
</template>
<script>
export default {
}
</script>
<style>
</style>
router/index.js에서 사용하는 component를 만들어줍니다.
6. core/AppBar.vue
<template>
<div>
<v-app-bar
dense
dark
>
<ul class="menu">
<li>
<v-btn
@click="toHome"
>
홈
</v-btn>
</li>
<li>
<v-btn
@click="toCreatePage"
>
생성
</v-btn>
</li>
<li>
<v-btn
@click="toTablePage"
>
목록
</v-btn>
</li>
</ul>
</v-app-bar>
</div>
</template>
<script>
export default {
methods: {
toHome() {
this.$router.push("/")
},
toCreatePage() {
this.$router.push("/create")
},
toTablePage() {
this.$router.push("/table")
},
}
}
</script>
<style>
ul.menu li{ display: inline;}
</style>
6. 웹 브라우저로 확인하기
npm run serve 명령어로 프론트 서버를 띄우고
localhost:8080/
localhost:8080/page
를 입력하여 router가 정상적으로 동작하는것을 확인할 수 있습니다.
url에 맞게 view가 변경됩니다.
반응형
'vue' 카테고리의 다른 글
[vue] vue 프로젝트에 jest 연동, 사용하기 (0) | 2021.10.26 |
---|---|
[vue] vue tutorial 뷰 튜토리얼 -6- (vuetify 테이블 input박스) (0) | 2021.09.21 |
[vue] vue tutorial 뷰 튜토리얼 -4- (뷰 부모자식 통신 props 사용법) (0) | 2021.09.14 |
[vue] vue tutorial 뷰 튜토리얼 -3- (뷰 앱바 만들기) (0) | 2021.09.14 |
[vue] vue tutorial 뷰 튜토리얼 -2- (뷰 컴포넌트 쪼개기) (0) | 2021.09.14 |
댓글