Vue Router 是一個(gè) Vue.js 的官方路由管理器,它與 Vue.js 的核心深度集成,使得構(gòu)建單頁(yè)面應(yīng)用程序變得非常容易。Vue Router 提供了一個(gè)路由器對(duì)象,該對(duì)象可以創(chuàng)建一組有序的、嵌套的視圖組件,并根據(jù)路由URL對(duì)它們進(jìn)行映射。
Vue Router 的核心是一個(gè)路由表,該路由表定義了應(yīng)用程序中的所有可能路徑和路線。路由器會(huì)檢查當(dāng)前URL,根據(jù)路由表的定義來(lái)匹配URL,然后將URL映射到匹配的組件。
// 導(dǎo)入 Vue 和 VueRouter import Vue from 'vue' import VueRouter from 'vue-router' // 安裝插件 Vue.use(VueRouter) // 定義路由規(guī)則 const routes = [ { path: '/', component: Home }, { path: '/about', component: About }, { path: '/user/:id', component: User } ] // 創(chuàng)建路由器實(shí)例 const router = new VueRouter({ routes // short for `routes: routes` }) // 將路由器實(shí)例注入到 Vue 實(shí)例中 const app = new Vue({ router }).$mount('#app')
Vue Router 的源代碼位于GitHub上的Vue Router倉(cāng)庫(kù)中,并采用MIT許可協(xié)議開源。該源代碼使用Flow進(jìn)行類型檢查,并使用Vue.js的編碼約定。
Vue Router 使用Vue.js的響應(yīng)式系統(tǒng)來(lái)處理路由器的狀態(tài)。Vue Router 創(chuàng)建一個(gè)名為$route的包含當(dāng)前路由信息的響應(yīng)式對(duì)象,以及名為$router的路由器實(shí)例。這使得Vue組件可以直接與路由器實(shí)例交互,并可以響應(yīng)URL的變化。
當(dāng)前路由名稱:{{$route.name}}
當(dāng)前路由路徑:{{$route.path}}
Vue Router 的路由表可以通過(guò)不同方式來(lái)定義。最常見的方式是通過(guò)一個(gè)包含路徑和組件的對(duì)象數(shù)組來(lái)定義。路由對(duì)象可以包含參數(shù)、嵌套路由以及其他選項(xiàng),如別名和重定向等。
// 定義路由規(guī)則 const routes = [ { path: '/', component: Home }, { path: '/about', component: About }, { path: '/user/:id', component: User } ] // 創(chuàng)建路由器實(shí)例 const router = new VueRouter({ routes })
Vue Router 還支持導(dǎo)航守衛(wèi)來(lái)幫助你控制路由的進(jìn)入、中間和刪除。導(dǎo)航守衛(wèi)可以用于登錄、權(quán)限檢查以及其他操作。
// 全局前置守衛(wèi) router.beforeEach((to, from, next) =>{ if (to.matched.some(record =>record.meta.requiresAuth)) { if (!auth.loggedIn()) { next({ path: '/login', query: { redirect: to.fullPath } }) } else { next() } } else { next() } }) // 在組件中定義守衛(wèi) export default { created() { this.$router.beforeEach((to, from, next) =>{ // ... }) this.$router.afterEach((to, from) =>{ // ... }) } }
總的來(lái)說(shuō),Vue Router 是一個(gè)非常強(qiáng)大的路由管理器,易于使用且高度可定制。其源代碼清晰簡(jiǎn)潔,文檔詳細(xì)清晰,可以幫助你構(gòu)建出最優(yōu)秀的單頁(yè)應(yīng)用程序。