0
点赞
收藏
分享

微信扫一扫

Vue3使用路由开发(一)


路由

同一个路由可以由多个动态段,比如​​/root/:name​​,如果匹配路径为​​/root/zss​​,那么$route.params就是为​​{ name:'zss' }​​,除此之外,​​$route​​中还可以使用​​$route.query​​或者​​$route.path​​。

路由参数中使用正则表达式,路由中如何至少有一个不是斜杠的字符,我们可以使用正则表达式​​([^/]+)​​来表示。当两个路由如果匹配完全相同的url时,我们可以通过在路径中增加一个静态部分来区分它们。如果web只能是数字,而vue可以为任何值时,我们可以使用圆括号中加正则表达式的形式来说明​​(\\d)​​。如果想要匹配零个或者多个,我们可以使用​​*​​修饰符。如果想要匹配一个或者多个,我们可以使用​​+​​修饰符。如果想要将参数标记为可选的,使用​​?​​修饰符。其中修饰符可以单独使用,也可以结合去使用。

const routes = [{
{ path: '/x/:web' },
{ path: '/y/:vue' }
}]

一个界面中也可以由多层嵌套组件组合而成。当我们在嵌套中渲染组件,我们需要在​​routes​​选项中添加​​children​​选项,这个里面是路由配置对象中的另一个数组,类似于​​routes​​。如果嵌套路径为根路径,使用​​/​​开头。我们可以在created生命周期使用​​this.$watch​​去监听​​$route.params​​变化,只有当路由参数的变化,才会被调用。​​$watch​​方法中如果想要监听器回调函数在监听开始后立即执行,我们可以设置​​immediate: true​​。

我们还可以用一个名称来标识路由,在根路径的配置中,使用​​redirect​​可以将路径进行重定向我们命名的路由上面去。这样当我们访问ip地址时,就会直接跳转到我们设置的name的组件中。除此之外我们还可以将函数接收的目标路由作为参数,然后动态返回重定向的目标。这个返回值可以是重定向的字符串路径也可以是路径对象。​​router-link​​中的to属性的值是表达式,所以需要使用v-bind指令。路由配置中还可以给路径设置一个别名,使用​​alias​​进行设置,当path的路径为x,alias设置为y,那么我们访问y的时候,url显示的还是y,但是路径匹配的是x,相当于用于在访问x一样。我们需要注意的是,别名不是重定向,重定向时访问x的时候,url的地址会显示为y,匹配的路由也是y。这就是两者的区别。

{
path: '/',
redirect: '/web'
}

{
path: '/vue/:num',
redirect: to => { return { path: '/vue', query: { x: to.params.num } } }
}

举报

相关推荐

0 条评论