【转】运用Vue-Router 2完成路由功用

请输入代码注重:vue-router 2只适用于Vue2.x版本,下面我们是基于vue2.0讲的怎样运用vue-router 2完成路由功用。
引荐运用npm装置。

npm install vue-router

一、运用路由
在main.js中,须要明白装置路由功用:

import Vue from ‘vue’
import VueRouter from ‘vue-router’
import App from ‘./App.vue’
Vue.use(VueRouter)

1.定义组件,这里运用从其他文件import进来

import index from './components/index.vue'
import hello from './components/hello.vue'

2.定义路由

const routes = [
    { path: '/index', component: index },
    { path: '/hello', component: hello },
]

3.建立 router 实例,然后传 routes 设置

const router = new VueRouter({
  routes
})

4.建立和挂载根实例。经由过程 router 设置参数注入路由,从而让全部运用都有路由功用

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

经由上面的设置以后呢,路由婚配到的组件将会衬着到App.vue里的<router-view></router-view>
那末这个App.vue里应当如许写:

<template>
  <div id="app">
        <router-view></router-view>
  </div>
</template>
index.html里呢要如许写:
<body>
    <div id="app"></div>
</body>

如许就会把衬着出来的页面挂载到这个id为app的div里了。
二、重定向 redirect

const routes = [
    { path: '/', redirect: '/index'},     // 如许进/ 就会跳转到/index
    { path: '/index', component: index }
]

三、嵌套路由

const routes = [
    { path: '/index', component: index,
        children: [
            { path: 'info', component: info}
        ]
     }
]

经由过程/index/info就能够访问到info组件了
四、懒加载

const routes = [
    { path: '/index', component: resolve => require(['./index.vue'], resolve) },
    { path: '/hello', component: resolve => require(['./hello.vue'], resolve) },
]

经由过程懒加载就不会一次性把一切组件都加载进来,而是当你访问到谁人组件的时刻才会加载那一个。关于组件比较多的运用会进步初次加载速率。
五、<router-link>
在vue-router 1中,运用的是
在vue-router 2中,运用了<router-link></router-link>替代1版本中的a标签
<!– 字符串 –>

<router-link to="home">Home</router-link>

<!– 衬着效果 –>

<a href="home">Home</a>

<!– 运用 v-bind 的 JS 表达式 –>

<router-link v-bind:to="'home'">Home</router-link>

<!– 不写 v-bind 也能够,就像绑定别的属性一样 –>

<router-link :to="'home'">Home</router-link>

<!– 同上 –>

<router-link :to="{ path: 'home' }">Home</router-link>

<!– 定名的路由 –>

<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>

<!– 带查询参数,下面的效果为 /register?plan=private –>

<router-link :to="{ path: 'register', query: { plan: 'private' }}">Register</router-link>

六、路由信息对象
1.$route.path
字符串,对应当前路由的途径,老是剖析为绝对途径,如 “/foo/bar”。

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
一个数组,包括当前路由的一切嵌套途径片断的 路由纪录 。路由纪录就是 routes 设置数组中的对象副本(另有在 children 数组)。
综合上述,一个包括重定向、嵌套路由、懒加载的main.js以下:

import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App'
Vue.use(VueRouter)
const router = new VueRouter({
  routes:[
    { path: '/', redirect: '/index' },
    { path: '/index', component: resolve => require(['./components/index.vue'], resolve),
        children:[
            { path: 'info', component: resolve => require(['./components/info.vue'], resolve) }
       ]
    },
    { path: '/hello', component: resolve => require(['./components/hello.vue'], resolve) },
  ]
})
const app = new Vue({
  router,
  render: h => h(App)
}).$mount('#app')
    原文作者:AdamLambert
    原文地址: https://segmentfault.com/a/1190000009082176
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞