npm install vue-router@4
import { createRouter, createWebHistory } from 'vue-router'
const routes = [
{
path: '/',
name: 'Home',
component: () => import('../views/HomeView.vue')
},
// 추가 라우트 정의
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
export default router
import { createApp } from 'vue'
import App from './App.vue'
import router from './router' // router 설정을 임포트
const app = createApp(App)
app.use(router) // Vue 애플리케이션에 router를 등록
app.use(vuetify)
app.mount('#app')
<router-link v-bind:to="`/user/${item.username}`">User-Info</router-link>
<!--./user/username -->
<router-link to="/user/">USER</router-link>
<!--./user/ -->
<template>
<div id="app">
<router-view></router-view>
</div>
</template>
<template>
<transition name="fade">
<router-view class="main"></router-view>
</transition>
</template>
<style scoped>
/* CSS : Router Transition */
.fade-enter-active, .fade-leave-active {
transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
</style>
// router.js
// 만약, url이 '/post/123'라면 :[id]=123 데이터와 함께 PostItem 컴포넌트로 이동
const router = new VueRouter({
routes: [{
path : '/post/:id'
component : () => import('../views/PostItem.vue')
}]
});
// PostItem.vue
// this.$route.params.id로 값을 전달 받을 수 있음
created() {
getPost('requestPost', this.$route.params.id);
}
<div id="app">
// url="/user/.."인 경우 User 컴포넌트가 들어옴
<router-view></router-view>
</div>
const User = {
template: `
<div class="user">
<h2>User {{ $route.params.id }}</h2>
// id값에 맞는 User의 하위 컴포넌트가 들어옴
<router-view></router-view>
</div>
`,
}
const routes = [
{
path: '/user/:id',
component: User,
children: [
{
// /user/:id/profile is matched
path: 'profile',
component: UserProfile,
},
{
// /user/:id/posts is matched
path: 'posts',
component: UserPosts,
},
],
},
]
// App.vue
<div id="app">
<router-view name="appHeader"></router-view>
<router-view></router-view>
<router-view name="appFooter"></router-view>
</div>
// router.js
{
path: '/home',
// Named Router
components: {
appHeader: AppHeader,
default: Body,
appFooter: AppFooter
}
},
https://velog.io/@yjyoo/vue.js-Vue-Router-%EC%A0%95%EB%A6%AC
https://jinyisland.kr/post/vue-router/