vue-router 基础学习

vue-router 基础学习
一只小程序员啊安装
1 | npm install vue-router@4 |
快速开始
新建路由实例并配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32import { createRouter, createWebHashHistory } from 'vue-router'
// 定义一些路由 每个路由都需要映射到一个组件
const routes = [
{
path: '/',
name: 'default',
redirect: '/login',
},
{
path: '/login',
name: 'login',
meta: {
name: '登录',
},
component: () => import('@views/login.vue'),
},
{
path: '/index/:id',
name: 'index',
meta: {
name: '主页',
},
component: () => import('@/views/index.vue'),
},
]
// 创建路由实例并传递 `routes` 配置
const router = createRouter({
history: createWebHashHistory(),
routes //`routes: routes` 的缩写
})
export default router创建并挂载到根实例
1
2
3
4const app = Vue.createApp({})
//整个应用支持路由。
app.use(router)
app.mount('#app')
动态路由匹配
路由中设置一个或多个路径参数,路径参数 用冒号 :
表示。当一个路由被匹配时,它的 params 的值将在每个组件中以 this.$route.params
的形式暴露出来
1 | { |
同一路由设置多个路径参数的匹配规则
匹配模式 | 匹配路径 | $route.params |
---|---|---|
/users/:username | /users/eduardo | { username: 'eduardo' } |
/users/:username/posts/:postId | /users/eduardo/posts/123 | { username: 'eduardo', postId: '123' } |
路由里配置了路径参数,但是访问时没带上时,会找不到路由
带参的路由使用时,用户从/index/1
导航到 /index/2
时,相同的组件实例将被重复使用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会被调用
要对同一个组件中参数的变化做出响应的话,你可以简单地 watch $route
对象上的任意属性,在这个场景中,就是 $route.params
:
1 | watch: { |
或者,使用 beforeRouteUpdate
导航守卫,它也可以取消导航:
1 | const User = { |
路由匹配语法
路由的path中可以自定义正则来匹配
如果需要一个参数匹配多个部分路由,