📅  最后修改于: 2023-12-03 15:21:05.152000             🧑  作者: Mango
Vue Router 是 Vue.js 的官方路由管理器。它和 Vue.js 核心深度集成,让构建单页面应用更容易。
在单页面应用中,会在一个 HTML 页面中加载不同的组件,这样可以提高页面响应速度,不需要刷新整个页面。
但是,这也会带来一个问题:如何管理不同组件之间的跳转和状态呢?这就需要一个路由管理器。
Vue Router 正是为此而生,它提供了简单和灵活的 API,可以轻松管理单页面应用中的路由。
在安装 Vue.js 的同时,也会安装 Vue Router。如果你是手动安装的,可以通过以下命令安装:
npm install vue-router
在使用 Vue Router 之前,需要先把它引入到你的项目中:
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
然后,定义一些路由:
const routes = [
{ path: '/foo', component: Foo },
{ path: '/bar', component: Bar }
]
其中,每一个路由都有一个 path 和 component 属性。path 表示路由的路径,component 表示路由对应的组件。
最后,创建一个 Router 实例,传入路由配置:
const router = new VueRouter({
routes
})
最后一步是将 Router 实例注入到 Vue 根实例中:
const app = new Vue({
router
}).$mount('#app')
这样,就可以在组件中使用路由了:
<template>
<div>
<router-link to="/foo">Go to Foo</router-link>
<router-link to="/bar">Go to Bar</router-link>
<router-view></router-view>
</div>
</template>
这里,router-link 组件表示一个链接,to 属性表示链接的目标路径。router-view 组件表示要渲染的组件。
有时,我们需要根据实际情况生成路由。这时,可以使用动态路由。
const router = new VueRouter({
routes: [
{ path: '/user/:id', component: User }
]
})
在上面的配置中,:id 表示一个动态参数,可以通过 this.$route.params.id 获取。
有时,一个路由还会有子路由。这时,可以使用嵌套路由。
const router = new VueRouter({
routes: [
{
path: '/user/:id',
component: User,
children: [
{
path: 'profile',
component: Profile
},
{
path: 'posts',
component: Posts
}
]
}
]
})
这里,User 是父组件,它有两个子组件 Profile 和 Posts。子组件的路径是相对于父组件的路径而言的。
有时,我们需要在路由切换之前或之后执行一些操作,比如登录检查、数据加载等。这时,可以使用导航守卫。
导航守卫有三个钩子函数:beforeEach、beforeRouteUpdate 和 afterEach。其中,beforeEach 表示在路由切换之前执行,beforeRouteUpdate 表示在当前路由复用时执行,afterEach 表示在路由切换之后执行。
const router = new VueRouter({
routes: [
{ path: '/foo', component: Foo },
{ path: '/bar', component: Bar }
]
})
router.beforeEach((to, from, next) => {
// ...
})
router.beforeRouteUpdate((to, from, next) => {
// ...
})
router.afterEach((to, from) => {
// ...
})
其中,to 表示将要跳转的路由,from 表示当前路由,next 表示执行下一步操作。
Vue Router 是 Vue.js 的官方路由管理器,可以提高单页面应用的响应速度,提供了简单和灵活的 API,可以轻松管理不同组件之间的跳转和状态,支持动态路由和嵌套路由,同时还提供了导航守卫,方便实现登录检查、数据加载等功能。