• 官方文档:路由对象属性
  • 和官方文档的不同点:看文档的过程中一些可能造成歧义的地方(语义层面),进行了扩充

$router.path:当前路由的路径

$route.params:路由参数

  • 类型: object
  • 一个 key/value 对象,包含了动态片段和全匹配片段,如果没有路由参数,就是一个空对象。
    • 动态片段(动态路由参数):在router中用:声明的片段,是为了把某种模式匹配的所有路由都映射到一个组件。比如下面代码中的:type即为动态路由参数。
  1. {
  2. path: '/Subpage/:type',
  3. name: 'Subpage',
  4. component: myComponents.Subpage,
  5. beforeEnter (to, from, next) {
  6. next()
  7. }
  8. },
  • 全匹配片段:vue-router 使用 path-to-regexp 作为路径匹配引擎,所以支持很多高级的匹配模式。例如↓
  1. // a param can be made optional by adding "?"
  2. { path: '/optional-params/:foo?' },
  3. // a param can be followed by a regex pattern in parens
  4. // this route will only be matched if :id is all numbers
  5. { path: '/params-with-regex/:id(\\d+)' },
  6. // asterisk can match anything
  7. { path: '/asterisk/*' },
  8. // make part of the path optional by wrapping with parens and add "?"
  9. { path: '/optional-group/(foo/)?bar' }

$route.query:查询参数

  • 类型: object
  • 一个 key/value 对象,表示 URL 查询参数。例如,对于路径 /foo?user=1,则有 $route.query.user == 1,如果没有查询参数,则是个空对象。
  • 相当于location.search的key-value版

$route.hash:hash值

  • 类型: string
  • 当前路由的 hash 值 (带 #) ,如果没有 hash 值,则为空字符串。
  • 注意!这里的hash不是路由,例如http://0.0.0.0:8081/#/Subpage的$route.hash是空字符串而不是#/Subpage。如果想要知道当前路由就必须使用location.hash来获取。
  • http://0.0.0.0:8081/#/Subpage#title$route.hash即为#title

$route.fullPath:完整路径

  • 类型: string
  • 完成解析后的 URL,包含查询参数和 hash 的完整路径。
  1. // url: http://0.0.0.0:8081/?test=true#/Subpage/9kuai9#title
  2. console.log(this.$route.fullPath)
  3. // '/Subpage/9kuai9#title'
  4. console.log(location.hash)
  5. // '#/Subpage/9kuai9#title'
  • 与$route.path的区别:path不包含哈希
  1. console.log(this.$route.fullPath)
  2. // '/Subpage/9kuai9#title'
  3. console.log(this.$route.path)
  4. // '/Subpage/9kuai9''

$route.matched:当前路由的所有嵌套路径片段的路由记录

  • 类型: Array<RouteRecord>
  • 一个数组,包含当前路由的所有嵌套路径片段的路由记录 。路由记录就是 routes 配置数组中的对象副本 (还有在 children 数组)。
  1. const router = new VueRouter({
  2. routes: [
  3. // 下面的对象就是路由记录
  4. {
  5. path: '/foo',
  6. component: Foo,
  7. children: [
  8. // 这也是个路由记录
  9. { path: 'bar', component: Bar }
  10. ]
  11. }
  12. ]
  13. })
  • 当 URL 为 /foo/bar,$route.matched 将会是一个包含从上到下的所有对象 (副本)。

$route.name:当前路由的名称

  • 类型: string
  • 当前路由的名称,如果有的话。
  • 如果没有,会为undefined

$route.redirectedFrom:重定向来源的路由

  • 类型: string
  • 如果存在重定向,即为重定向来源的路由。即使是从http://0.0.0.0:8081/跳过来的,也会获取到/
  • 如果不存在重定向,那么会为undefined