Vue 路由守衛是一種機制,用于在視圖切換前或后對路由進行驗證或執行某些操作。在 Vue 中,路由守衛分為三類:全局守衛、路由獨享守衛和組件級別守衛。
全局守衛會在每個路由切換時都會觸發,可以在中央控制路由、跟蹤用戶行為、控制訪問權限等方面發揮作用。
const router = new Router({ routes: [...], }) router.beforeEach((to, from, next) =>{ // ... })
在上面的例子中,router.beforeEach()函數將會在每個路由切換前被調用。to參數表示要進入的目標路由,from表示離開的路由,next參數是一個方法,可以控制路由跳轉。
router.beforeEach((to, from, next) =>{ if (user.isAuthenticated) { next() } else { next('/login') } })
在上面的例子中,如果用戶已經通過驗證,則會調用next()方法允許路由過渡。否則,會調用next('/login')跳轉到登錄頁面。
路由獨享守衛僅對指定的路由起作用,不會對其他路由產生影響。
const router = new Router({ routes: [ { path: '/home', component: Home, beforeEnter: (to, from, next) =>{ // ... } }, // ... ] })
在上面的例子中,beforeEnter()方法僅在訪問路由"/home"時被調用。
組件級別守衛可以在組件內定義,用于控制組件內部的訪問權限。
export default { data() { return { authenticated: false } }, beforeRouteEnter(to, from, next) { const authenticated = checkAuthenticate() if (authenticated) { next() } else { next('/login') } } }
在上面的例子中,beforeRouteEnter方法會在一個組件即將被進入前被調用。如果用戶通過了驗證,則調用next()方法允許訪問。否則,調用next('/login')跳轉到登錄頁面。
總之,Vue 路由守衛是一種非常實用的機制,可以非常靈活地控制路由的跳轉、訪問權限等。熟練掌握路由守衛對于靈活控制前端路由的實現具有重要意義。
上一篇c語言解析json實例
下一篇vue 路由執行順序