在使用 Vue.js 進行前端開發(fā)時,經(jīng)常會用到 Vue router。Vue router 是 Vue.js 官方的路由管理器,它可以非常方便地管理應(yīng)用程序的路由,從而實現(xiàn)單頁應(yīng)用的功能。然而,Vue 3.0 版本中默認不再使用 Vue router。
Vue 3.0 之后,Vue 提供了新的路由管理器 vue-router@4,與 vue-router@3 相比,最顯著的變化是取消了對 Vue.js 2.x 的依賴,同時通過新的編譯器實現(xiàn)了更高的性能。
// vue-router@3 中的配置方式 import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) const router = new Router({ mode: 'history', routes: [ { path: '/', name: 'home', component: () =>import(/* webpackChunkName: "home" */ '../views/Home.vue') }, { path: '/about', name: 'about', component: () =>import(/* webpackChunkName: "about" */ '../views/About.vue') } ] }) export default router
// vue-router@4 中的配置方式 import { createRouter, createWebHistory } from 'vue-router' const routes = [ { path: '/', name: 'home', component: () =>import('../views/Home.vue') }, { path: '/about', name: 'about', component: () =>import('../views/About.vue') } ] const router = createRouter({ history: createWebHistory(), routes }) export default router
從代碼中可以看出,vue-router@4 的變化主要體現(xiàn)在編寫方式上,同時還有新的 API 和方法可供使用。而在功能方面,則與之前版本基本相同。
在使用 vue-router@4 時,需要注意以下幾個問題:
- 取消了 Vue.use(Router) 的調(diào)用方式,需要在入口文件中使用 app.use(router) 進行注冊
- 取消了 mode 參數(shù),需要使用 createWebHistory() 和 createMemoryHistory() 進行配置
- 使用路由鉤子時,beforeRouteEnter 和 beforeRouteUpdate 的參數(shù)變化
- 取消了 $router 和 $route 對象,在組件內(nèi)需要通過 useRoute 和 useRouter 方法獲取
- 可以使用新的 API,如導(dǎo)航守衛(wèi)的 addRoute()、removeRoute()、hasRoute() 和 getRoutes() 方法等
總的來說,雖然 vue-router@4 的使用方式發(fā)生了改變,但基本功能保持了一致性,并且提供了更高的性能與更多的 API 可供使用,是值得學(xué)習和使用的。對于之前使用 vue-router@3 的開發(fā)者而言,雖然需要順應(yīng)一定的變化,但相信只要了解各種新方法和 API 的使用,也能夠順利地完成項目。