关于vue路由的整理

1、使用 router-link 组件来导航,通过传入 to 属性指定链接, 默认会被渲染成一个 标签

html部分

 Go to Foo
 Go to Bar

js部分

// 1. 定义(路由)组件 
const Foo = { template: '
foo
' } const Bar = { template: '
bar
' } //可以从其他文件 import 进来 const Foo = r => require.ensure([], () => r(require('@/page/Foo.vue')), 'Foo')//@代表src文件夹 // 2. 定义路由 const routes = [ { path: '/foo', component: Foo }, { path: '/bar', component: Bar } ] // 3. 创建 router 实例,然后传 `routes` 配置 const router = new VueRouter({ routes // (缩写)相当于 routes: routes }) // 4. 创建和挂载根实例。 const app = new Vue({ router }).$mount('#app')

对应的路由匹配成功,将自动设置 class 属性值 .router-link-active

2、动态路由匹配

例如,我们有一个 User 组件,对于所有 ID 各不相同的用户,都要使用这个组件来渲染

const User = {
  template: '
User
' } const router = new VueRouter({ routes: [ // 动态路径参数 以冒号开头 { path: '/user/:id', component: User } ] })
  • 当匹配到一个路由时,参数值会被设置到 this.$route.params
    我们可以更新 User 的模板,输出当前用户的 ID:
const User = {
  template: '
User {{ $route.params.id }}
' }
模式 匹配路径 $route.params
/user/:username /user/evan { username: 'evan' }
/user/:username/post/:post_id /user/evan/post/123 { username: 'evan', post_id: 123 }

3、路由信息对象的属性

  • $route.path
    • 类型: string
      • 字符串,对应当前路由的路径,总是解析为绝对路径,如 "/foo/bar"。
  • $route.params
    • 类型: Object
      • 一个 key/value 对象,包含了 动态片段 和 全匹配片段,如果没有路由参数,就是一个空对象。
  • $route.query
    • 类型: Object
      • 一一个 key/value 对象,表示 URL 查询参数。例如,对于路径 /foo?user=1,则有 $route.query.user == 1,如果没有查询参数,则是个空对象。
  • $route.hash
    • 类型: string
      • 当前路由的 hash 值 (带 #) ,如果没有 hash 值,则为空字符串。
  • $route.fullPath
    • 类型: string
      • 完成解析后的 URL,包含查询参数和 hash 的完整路径。
  • $route.matched
    • 类型: Array
      • 一个数组,包含当前路由的所有嵌套路径片段的 路由记录 。路由记录就是 routes 配置数组中的对象副本(还有在 children 数组)。
        const router = new VueRouter({
          routes: [
            { path: '/foo', component: Foo,
              children: [
                { path: 'bar', component: Bar }
              ]
            }
          ]
        })

当 URL 为 /foo/bar$route.matched 将会是一个包含从上到下的所有对象(副本)。

  • $route.name
    * 当前路由的名称,如果有的话。(查看 命名路由)

4、命名路由

通过一个名称来标识一个路由显得更方便一些,特别是在链接一个路由,或者是执行一些跳转的时候

const router = new VueRouter({
  routes: [
     { path: '/', name: 'home', component: Home },
     { path: '/foo', name: 'foo', component: Foo },
     { path: '/user/::userId', name: 'user', component: User }
  ]
})

要链接到一个命名路由,可以给 router-link 的 to 属性传一个对象:

 

Named Routes

Current route name: {{ $route.name }}

  • home
  • foo
  • bar

这跟代码调用 router.push() 是一回事:

router.push({ name: 'user', params: { userId: 123 }})

5、路由的跳转总结

*Home

*Home

*Home

*User

*Register

我们可以通过设置router-link中的tag来改变链接的标签


  /foo

你可能感兴趣的:(关于vue路由的整理)