Vue Router(二):深入剖析 Vue Router 高级特性
在前端开发领域,Vue.js 框架凭借其简洁、灵活和高效的特点,得到了广泛应用。而 Vue Router 作为 Vue.js 的官方路由管理器,为构建单页面应用(SPA)提供了强大的支持。本文将深入探究 Vue Router 的高级特性,包括路由的动态参数和查询参数的使用方法、路由的嵌套结构以及导航守卫(全局守卫、路由独享守卫、组件内守卫)的应用场景和配置方式,旨在帮助学习者掌握复杂的路由管理需求。
一、路由的动态参数和查询参数
(一)动态参数
动态参数用于在路由中传递可变的参数值,使页面能够根据不同参数展示对应的内容。定义动态路由时,在路径中使用冒号 :
后跟参数名称来指定动态段。
-
定义动态路由
const routes = [
{ path: '/user/:id', component: User }
]
在这种情况下,:id
就是一个动态参数。当访问 /user/123
、/user/456
等路径时,会匹配到该路由,并将 id
参数传递给对应的组件。
-
在组件中访问动态参数
在组件内部,可以通过 $route.params
对象来获取动态参数的值。例如,在 User
组件中:
export default {
name: 'User',
mounted() {
console.log(this.$route.params.id); // 输出动态参数 id 的值
}
}
(二)查询参数
查询参数是在 URL 的末尾以 ?key=value
形式附加的参数,用于传递额外的信息。
-
定义包含查询参数的路由
const routes = [
{ path: '/search', component: Search }
]
访问 /search?keyword=vue&age=20
这样的 URL 时,就可以获取查询参数。
-
在组件中访问查询参数
在组件中通过 $route.query
对象来获取查询参数的值。例如,在 Search
组件中:
export default {
name: 'Search',
mounted() {
console.log(this.$route.query.keyword); // 输出 'vue'
console.log(this.$route.query.age); // 输出 '20'
}
}
(三)动态参数与查询参数的对比
对比项 | 动态参数 | 查询参数 |
---|---|---|
定义方式 | 在路径中使用 :参数名 |
在 URL 末尾以 ?key=value 形式附加 |
获取方式 | $route.params |
$ |