Vue中$router和$route的区别

我们在vue项目中一般都会用到路由,而vue-router是vue.js官方的路由管理器。

this.$route 当前激活的路由的信息对象,每个对象都是局部的, 可以获取当前路由的path. name, params, query等属性

this.$router :全局的router实例,通过vue根实例中注入router实例,然后再注入到每个子组件,从而让整个应用都有路由功能。其中包含了很多属性和对象(比如history对象),任何页面也可以调用其push(), replace(), go()等方法。

vue中的路由跳转分为编程式和声明式。

声明式:就是使用router-link组件来导航,通过传入to属性指定链接(router-link默认会被渲染为一个a标签),当需要在一个页面中嵌套子路由,并且页面不跳转的时候,这种方式很好用,只需要将子页面渲染在router-view里面就可以了。

编程式:采用这种方式就需要导入VueRouter并调用。

采用编程式介绍vue-router的使用步骤:

  1. 定义两个路由跳转的单.vue组件: home.vue 和user.vue

  2. 导入vue, vue-router,并定义路由,每个路由包含一个component属性,这种属性映射一个组件—router.js

    import Vue from 'vue'
    import Router from 'vue-router'
    
    import Home from './home/.vue'
    import User from './user.vue'
    
    Vue.use(Router);
  3. 创建router实例,并传递routes配置----router.js

    const routes = [
    	{ path: '/home', component: Home },
    	{ path: '/user', component: User }
    ]
    
    const router = new Router({
    	routes
    })
  4. 在vue根实例中注入路由,这样就可以在其它任何组件中访问路由了-----main.js

    import router from './router'
    
    new Vue({
    	router,
    	render: h => h(App)
    }).$mount('#app')

在上面user和home组件内访问路由有两种方式: this. r o u t e r 和 t h i s . router 和 this. routerthis.route。 这两种方式使用起来大致一样,但是有区别。

this.$route显示了当前激活的路由的信息对象,这个对象是局部的,可以获取当前路由的path, name, params, query等属性

其中,$route.matched是一个数组,包含了当前路由的所有嵌套记录,即routers配置中的对象数组,包含自己的信息和children数据。

此外,在vue实例内部,还可以通过this.$router访问路由实例,它是一个全局的路由实例,通过vue根实例中注入router实例,然后再注入到每个子组件,从而让整个应用都有路由功能。其中包含了很多属性和对象(包含history对象),任何页面也都可以调用其push(), replace(), go()等方法。

push()方法会向history中添加一条记录,当点击浏览器的返回按钮可以退回到前一个页面,当我们点击<router-link-to=’…’ />时等同于调用了this.$router.push()

this.$router.push()方法的参数可以是一个字符串路径,或者是一个地址对象,比如:

this.$router.push('home')

this.$router.push({path:'home'})

也可以携带参数,但是要注意的是,如果提供了path, params会被忽略,比如:

this.$router.push({path:‘home’, params:{page:2}}) 这里的params会被忽略

同样的规则也适用于router-link 的to属性

可以使用如下几种方法:

this.$router.push({path: '/home/${page=2}'})
this.$router.push({name:'home', params:{page:2}})
this.$router.push({path:'home', query:{page:2}})

这几种方法获取参数的方式:this.$route.params.page

this.$route.query.page


r o u t e 是 route是 routerouter正在跳转的路由对象,可以获取name, path, params, query等;

r o u t e r 是 V u e R o u t e r 的 实 例 , 相 当 于 一 个 全 局 的 路 由 器 对 象 , 里 面 包 含 很 多 属 性 和 子 对 象 , 例 如 h i s t o r y 对 象 。 相 当 于 r o u t e r − l i k e 的 a 标 签 , 使 用 router是VueRouter的实例,相当于一个全局的路由器对象,里面包含很多属性和子对象,例如history对象。相当于 router-like的a标签,使用 routerVueRouterhistoryrouterlikea使router.push跳转页面,这个方法会向history栈添加一个新的记录,所以当点击后退,使用 r o u t e r . g o 则 返 回 上 一 个 页 面 。 经 常 用 的 跳 转 链 接 就 可 以 使 用 t h i s . router.go则返回上一个页面。经常用的跳转链接就可以使用this. router.go使this.router.push,和router-link跳转一样。


VUE从入门到放弃(平摊手)~~~~~~~~

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值