vue-router

2018-07-12  本文已影响0人  沐晓黑

匹配优先级按路由定义顺序

路由导航

声明式 编程式
<router-link :to="..."> router.push(...)
// 字符串
router.push('home')
// 对象
router.push({ path: 'home' })
// 命名的路由
router.push({ name: 'user', params: { userId: 123 }})
// 带查询参数,变成 /register?plan=private
router.push({ path: 'register', query: { plan: 'private' }})

注意:如果提供了 path,params 会被忽略,上述例子中的 query 并不属于这种情况。取而代之的是下面例子的做法,你需要提供路由的 name 或手写完整的带有参数的 path:

const userId = 123
router.push({ name: 'user', params: { userId }}) // -> /user/123
router.push({ path: `/user/${userId}` }) // -> /user/123
// 这里的 params 不生效
router.push({ path: '/user', params: { userId }}) // -> /user

动态路由

import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/core/pages/home'
Vue.use(Router)
var person = {
  template: '<div>Person</div>'
}
export default new Router({
  routes: [
    {
      path: '/person/:id', component: person
    },
  ]
})

$route.params

var person = {
  template: '<div>Person  {{ $route.params.id }} </div>'
}
模式 路径 $route.params
/person/:name /person/test { name: 'test' }
/person/:name/:age /person/test/20 { name: 'test', age: 20 }

$route.path

$route.query

嵌套路由

export default new Router({
  routes: [
    {
      path: '',
      meta: {title: '首页', auth: '首页'},
      component: Home,
      children: [
        {
          path: '/',
          name: 'Home',
          component: Home
        },
        {
          path: '/home',
          name: 'Home',
          component: Home
        },
      ]
    }
  ]
})

此时访问 http://localhost:8080/#/homehttp://localhost:8080/#/所展示的页面相同

上一篇下一篇

猜你喜欢

热点阅读