0
点赞
收藏
分享

微信扫一扫

Vue3使用路由开发(二)


命名视图

项目中会遇到同级显示多个视图而且不属于嵌套关系时,就会用到命名视图。这样可以在界面中使用多个单独命名的视图。如果没有设置名字的​​route-view​​会默认为​​default​​。一个视图使用一个组件进行渲染,对于同一个路由,多个视图就需要我们使用多个组件。

const router = createRouter({
history: createWebHashHistory(),
routes: [{
path: '/',
components: {
default: Tea,
warpp: Warpp
}
}]
})

我们在使用router-link时,会自动创建a标签,我们还可以使用router的实例方法来编写导航,这样想要导航到不同的url时,我们就可以使用​​push​​方法。router实例调用push方法时会向​​history​​增加一条。当用户点击浏览器进行回退时,就会回到之前的url地址。这个push方法也相当于router-link中加了to。push方法中的参数是可以是字符串路径也可以是位置描述符对象。带查询参数,使用query,​​/zss?plan=lyn​​。使用​​hash​​,结果​​/war#zjy​​。push方法也是返回一个​​Promise​​,可以等待导航完成以及知道结果是成功还是失败。除此之外,我们还可以使用​​replace​​方法进行路由跳转。但是我们需要知道这个方法不会向history添加记录,而是将当前的history记录进行替换,在用法方面是一样的。​​forward​​,​​back​​,​​go​​这些方法都可以被router的实例去调用。

router.push({ path: 'zss', query: { plan: 'lyn' } });
router.push({ path: '/war', hash: '#zjy' });

组件中如果使用​​$route​​会导致与路由耦合,所以我们可以使用​​props​​进行解耦来解决耦合的问题。我们在配置路由时,可以设置​​props​​的值为true。然后就可以获取里面的值。当​​props​​为一个对象时,我们原样设置后在静态的时候就体现出用处了。也可以设置一个props的返回函数,然后将参数转换为其他类型。还可以将静态值和路由值结合使用。​​history​​模式下,我们需要注意一个问题,如果我们在浏览器地址栏输入地址或者把页面进行刷新时,这个时候解析的url会向服务器发送请求,如果没有对应的响应,就会出现404错误。但是在html5中,我们可以使用导航链接去路由页面,这样就不会发起http的请求也不会出现错误。我们使用时,需要在服务器上配置一个备用资源,这样当访问或者匹配不到任何资源时,就可以设置一个静态页面。而且​​node​​服务器也支持html5的history模式。

举报

相关推荐

0 条评论