Vue-router中的$route和$router的区别

193 阅读1分钟

Vue-router中的$route和$router的区别

可以理解为,一个($route)是用来获取路由信息的,一个($router)是用来操作路由的。 route是内容,router是分发器

一、$route()

this.$route当前激活的路由的信息对象。每个对象都是局部的,可以获取当前路由的 path,name, params, query 等属性。 其中$route.matched是一个数组,包含了当前路由的所有嵌套记录,即 routes 配置中的对象数组,包括自己的信息和 children 数据。

1.    $route.path  字符串,对应当前路由的路径,总是解析为绝对路径,如"/foo/bar"。例如,对于路径 /foo?user=1,则有$route.query.user == 1,如果没有查询参数,则是个空对象。

2.    $route.params  一个 key/value 对象,包含了动态片段和全匹配片段,如果没有路由参数,就是一个空对象。

3.    $route.query  一个 key/value 对象,表示 URL 查询参数。例如,对于路径 /foo?user=1,则有$route.query.user == 1,如果没有查询参数,则是个空对象。

4.    $route.hash  当前路由的hash值 (不带#) ,如果没有 hash 值,则为空字符串。锚点*

5.    $route.fullPath  完成解析后的 URL,包含查询参数和hash的完整路径。

6.    $route.matched  数组,包含当前匹配的路径中所包含的所有片段所对应的配置参数对象。

7.    $route.name  当前路径名字

8.    $route.meta  路由元信息

二、$router()

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