下面是详细讲解“vue $router和$route的区别详解”的完整攻略:
背景
Vue.js 是一个轻量级的 MVVM 前端框架,常用的路由管理器是 vue-router。在使用 vue-router 过程中,可能会涉及到两个关键对象:$router 和 $route。这两个对象貌似很相似,但实际上有着明确的区别。本文将详细讲解两者的区别和应用场景。
$router
在 Vue.js 组件中,可以通过这个对象访问到 VueRouter 实例(路由管理器),从而可以方便地执行一些基于路由跳转的方法,如push, replace, go等,使用 $router 对象的优点:
- $router 可以很方便地执行路由跳转的方法。
- $router 对象仅用于在组件代码中调用路由方法,因此较为轻量。
示例:跳转到命名路径为/home的页面
// 通过 this.$router 访问路由(VueRouter实例)
this.$router.push({ name: 'home' });
$route
$route 是当前路由的信息对象,包含当前路由的路径、参数、查询参数等,使用 $route 对象的优点:
- $route 是只读的,不支持修改。
- $route 可以在 computed 中进行响应式更新,方便的获得当前路由变化后的信息。
示例:获取当前路径参数
// 通过 this.$route 访问当前路由信息
console.log(this.$route.params.id);
总结
$router 是 vue-router 的实例对象,提供了一些基于路由跳转的方法,如push, replace, go等。常用于在组件代码中执行路由跳转的方法。
$route 是当前路由的信息对象,包含当前路由的路径、参数、查询参数等。$route 是只读的,不支持修改,可以在 computed 中进行响应式更新,方便的获得当前路由变化后的信息。
除了上述区别,$router 和 $route 还有很多的实际应用场景,比如:
- 在全局导航守卫中使用 $router 拦截路由跳转。
- 在页面的 computed 中使用 $route 监听路由变化。
- 在组件内部使用 $router 跳转路由,同时又使用 $route 获得当前路由信息。
这里只是简单举了几个例子,还有很多其它的应用场景,需要在实际业务场景中灵活运用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue $router和$route的区别详解 - Python技术站