import { createRouter, createWebHistory } from 'vue-router'
import Home from '@/views/Home.vue'
const routes = [
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
component: () => import('@/views/About.vue')
}
]
const router = createRouter({
history: createWebHistory(),
routes
})
export default router
import { createApp } from 'vue'
import router from './router'
import App from './App.vue'
createApp(App)
.use(router)
.mount('#app')
{
path: '/user/:id',
component: User
}
<script setup>
import { useRoute } from 'vue-router'
const route = useRoute()
console.log(route.params.id)
</script>
{
path: '/user/:id',
component: User,
children: [
{
path: '',
component: UserHome
},
{
path: 'profile',
component: UserProfile
},
{
path: 'posts',
component: UserPosts
}
]
}
{
path: '/user/:id',
name: 'user',
component: User
}
<router-link :to="{ name: 'user', params: { id: 123 }}">
User
</router-link>
{
path: '/',
components: {
default: Home,
sidebar: Sidebar,
footer: Footer
}
}
<router-view></router-view>
<router-view name="sidebar"></router-view>
<router-view name="footer"></router-view>
<script setup>
import { useRouter } from 'vue-router'
const router = useRouter()
router.push('/users/eduardo')
router.push({ path: '/users/eduardo' })
router.push({ name: 'user', params: { id: 'eduardo' } })
router.push({ path: '/register', query: { plan: 'private' } })
router.push({ path: '/about', hash: '#team' })
router.replace({ path: '/home' })
router.go(1)
router.go(-1)
router.back()
router.forward()
</script>
router.beforeEach((to, from) => {
if (to.meta.requiresAuth && !isAuthenticated) {
return { name: 'Login' }
}
})
router.afterEach((to, from) => {
console.log('Navigation finished')
})
{
path: '/users/:id',
component: User,
beforeEnter: (to, from) => {
return false
}
}
<script setup>
import { onBeforeRouteLeave, onBeforeRouteUpdate } from 'vue-router'
onBeforeRouteLeave((to, from) => {
const answer = window.confirm('确定要离开吗?')
if (!answer) return false
})
onBeforeRouteUpdate(async (to, from) => {
})
</script>
{
path: '/admin',
component: Admin,
meta: {
requiresAuth: true,
roles: ['admin']
}
}
router.beforeEach((to, from) => {
if (to.meta.requiresAuth) {
}
})
const router = createRouter({
history: createWebHistory(),
routes,
scrollBehavior(to, from, savedPosition) {
if (savedPosition) {
return savedPosition
} else {
return { top: 0 }
}
}
})
const routes = [
{
path: '/about',
component: () => import('@/views/About.vue')
}
]
<script setup>
import { useRouter, useRoute } from 'vue-router'
const router = useRouter()
const route = useRoute()
console.log(route.params)
console.log(route.query)
console.log(route.meta)
const goToUser = (id) => {
router.push({ name: 'user', params: { id } })
}
</script>