Vue開發(fā)之vue-router的基本使用

一、安裝
Install vue-router? Yes
npm install vue-router
二、將組件 (components) 映射到路由 (routes)并渲染
步驟一
// 0. 如果使用模塊化機(jī)制編程,導(dǎo)入Vue和VueRouter,要調(diào)用 Vue.use(VueRouter)import Vue from 'vue' // 導(dǎo)入vueimport VueRouter from 'vue-router' // 導(dǎo)入vue-routerVue.use(VueRouter)// 1. 定義(路由)組件import Home from '@/components/Home'// 2. 創(chuàng)建 router 實(shí)例,然后傳 `routes` 配置export default new Router({// 3. 定義路由,每個(gè)路由應(yīng)該映射一個(gè)組件,// “component”可以是通過 Vue.extend() 創(chuàng)建的組件構(gòu)造器,// 或者,只是一個(gè)組件配置對(duì)象。routes: [{path: '/',name: 'Home',component: Home}]})
步驟二
// 1. 引入routerimport router from './router'// 2. 創(chuàng)建和掛載根實(shí)例new Vue({router}).$mount('#app')
步驟三
<template><div><router-view /></div></template>
三、聲明式導(dǎo)航
<div id="app"><!-- 使用 router-link 組件來導(dǎo)航. --><!-- 通過傳入 `to` 屬性指定鏈接. --><!-- <router-link> 默認(rèn)會(huì)被渲染成一個(gè) `<a>` 標(biāo)簽 --><router-link to="/foo">Go to Foo</router-link><!-- `replace` 不會(huì)向 history 添加新記錄,而是替換掉當(dāng)前的 history 記錄--><router-link to="/bar" replace>Go to Bar</router-link></div>
四、編程式導(dǎo)航
router.push(location, onComplete?, onAbort?)
// 字符串router.push('home')// 對(duì)象router.push({path:'home'})// 命名的路由router.push({name:'user',params:{userId:'123'}})// 帶查詢參數(shù),變成 /register?plan=privaterouter.push({path:'register',query:{plan:'private'}})
const userId='123'// 傳值router.push({name:'user',params:{userId}})// 取值this.$route.params.userId// 傳值router.push({path:`/user/${userId}`})// 取值this.$route.query.userId
router.replace(location, onComplete?, onAbort?)
this.$router.push({path:'/home',replace:true})//如果是聲明式就是像下面這樣寫:<router-link :to="..." replace></router-link>// 編程式:router.replace(...)
router.go(n)
// 在瀏覽器記錄中前進(jìn)一步,等同于 history.forward()router.go(1)// 后退一步記錄,等同于 history.back()router.go(-1)// 前進(jìn) 3 步記錄router.go(3)// 如果 history 記錄不夠用,那就默默地失敗唄router.go(-100)router.go(100)
五、html5 History 模式
const router = new Vue Router({mode: 'history',routes: [...]})
如果你的應(yīng)用加載的是空白頁,可以考慮一下是不是使用了history模式。
六、路由懶加載
簡(jiǎn)單使用
// 1. 定義一個(gè)能夠被 webpack 自動(dòng)代碼分割的異步組件const Foo = () => import('./Foo.vue')// 2. 路由配置const router = new VueRouter({routes: [{ path: '/foo', component: Foo }]})
把組件按組分塊
const Foo = () => import(/* webpackChunkName: "group-foo" */ './Foo.vue')const Bar = () => import(/* webpackChunkName: "group-foo" */ './Bar.vue')const Baz = () => import(/* webpackChunkName: "group-foo" */ './Baz.vue')

評(píng)論
圖片
表情
