亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue-router 實現(xiàn)導(dǎo)航守衛(wèi)(路由衛(wèi)士)的實例代碼

 更新時間:2018年09月02日 07:44:03   作者:李小成  
這篇文章主要介紹了vue-router 實現(xiàn)導(dǎo)航守衛(wèi)(路由衛(wèi)士)的實例代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下

導(dǎo)航守衛(wèi)

導(dǎo)航守衛(wèi)即是在路由跳轉(zhuǎn)的時候,根據(jù)vue-router提供的導(dǎo)航守衛(wèi)主要用來通過跳轉(zhuǎn)或取消參數(shù)或查詢的改變并不會出觸發(fā)進(jìn)入/離開的導(dǎo)航守衛(wèi)

路由跳轉(zhuǎn)前做一些驗證,比如登錄驗證,是網(wǎng)站中的普遍需求。

對此,vue-route 提供的 beforeRouteUpdate 可以方便地實現(xiàn)導(dǎo)航守衛(wèi)(navigation-guards)。

導(dǎo)航守衛(wèi)(navigation-guards)這個名字,聽起來怪怪的,但既然官方文檔是這樣翻譯的,就姑且這么叫吧。

貼上文檔地址:https://router.vuejs.org/zh-cn/advanced/navigation-guards.html

全局守衛(wèi)

你可以使用 router.beforeEach 注冊一個全局前置守衛(wèi):

const router = new VueRouter({ ... })
router.beforeEach((to, from, next) => {
 // ...
})

當(dāng)一個導(dǎo)航觸發(fā)時,全局前置守衛(wèi)按照創(chuàng)建順序調(diào)用。守衛(wèi)是異步解析執(zhí)行,此時導(dǎo)航在所有守衛(wèi) resolve 完之前一直處于 等待中。

每個守衛(wèi)方法接收三個參數(shù):

•to: Route: 即將要進(jìn)入的目標(biāo) 路由對象

•from: Route: 當(dāng)前導(dǎo)航正要離開的路由

•next: Function: 一定要調(diào)用該方法來 resolve 這個鉤子。執(zhí)行效果依賴 next 方法的調(diào)用參數(shù)。

next(): 進(jìn)行管道中的下一個鉤子。如果全部鉤子執(zhí)行完了,則導(dǎo)航的狀態(tài)就是 confirmed (確認(rèn)的)。

next(false): 中斷當(dāng)前的導(dǎo)航。如果瀏覽器的 URL 改變了(可能是用戶手動或者瀏覽器后退按鈕),那么 URL 地址會重置到 from 路由對應(yīng)的地址。

next('/') 或者 next({ path: '/' }): 跳轉(zhuǎn)到一個不同的地址。當(dāng)前的導(dǎo)航被中斷,然后進(jìn)行一個新的導(dǎo)航。

next(error): (2.4.0+) 如果傳入 next 的參數(shù)是一個 Error 實例,則導(dǎo)航會被終止且該錯誤會被傳遞給 router.onError() 注冊過的回調(diào)。

確保要調(diào)用 next 方法,否則鉤子就不會被 resolved。

下面寫一個例子:

1.列舉需要判斷登錄狀態(tài)的“路由集合”,當(dāng)跳轉(zhuǎn)至集合中的路由時,如果“未登錄狀態(tài)”,則跳轉(zhuǎn)到登錄頁面LoginPage;

2.當(dāng)直接進(jìn)入登錄頁面LoginPage時,如果“已登錄狀態(tài)”,則跳轉(zhuǎn)到首頁HomePage;

import Vue from 'vue';
import Router from 'vue-router';
import LoginPage from '@/pages/login';
import HomePage from '@/pages/home';
import GoodsListPage from '@/pages/good-list';
import GoodsDetailPage from '@/pages/good-detail';
import CartPage from '@/pages/cart';
import ProfilePage from '@/pages/profile';
Vue.use(Router)
const router = new Router({
 routes: [
  {
   path: '/', // 默認(rèn)進(jìn)入路由
   redirect: '/home'  //重定向
  },
  {
   path: '/login',
   name: 'login',
   component: LoginPage
  },
  {
   path: '/home',
   name: 'home',
   component: HomePage
  },
  {
   path: '/good-list',
   name: 'good-list',
   component: GoodsListPage
  },
  {
   path: '/good-detail',
   name: 'good-detail',
   component: GoodsDetailPage
  },
  {
   path: '/cart',
   name: 'cart',
   component: CartPage
  },
  {
   path: '/profile',
   name: 'profile',
   component: ProfilePage
  },
  {
   path: '*',  // 匹配沒有注冊的路由
   redirect: '/home'  //重定向
  },
 ]
});
// 全局路由守衛(wèi)
router.beforeEach((to, from, next) => {
 console.log('navigation-guards');
 // to: Route: 即將要進(jìn)入的目標(biāo) 路由對象
 // from: Route: 當(dāng)前導(dǎo)航正要離開的路由
 // next: Function: 一定要調(diào)用該方法來 resolve 這個鉤子。執(zhí)行效果依賴 next 方法的調(diào)用參數(shù)。
 const nextRoute = ['home', 'good-list', 'good-detail', 'cart', 'profile'];
 let isLogin = global.isLogin; // 是否登錄
 // 未登錄狀態(tài);當(dāng)路由到nextRoute指定頁時,跳轉(zhuǎn)至login
 if (nextRoute.indexOf(to.name) >= 0) { 
  if (!isLogin) {
   console.log('what fuck');
   router.push({ name: 'login' })
  }
 }
 // 已登錄狀態(tài);當(dāng)路由到login時,跳轉(zhuǎn)至home 
 if (to.name === 'login') {
  if (isLogin) {
   router.push({ name: 'home' });
  }
 }
 next();
});
export default router;

總結(jié)

以上所述是小編給大家介紹的vue-router 實現(xiàn)導(dǎo)航守衛(wèi)(路由衛(wèi)士)的實例代碼,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!

相關(guān)文章

  • vue2如何安裝引入Ant Design

    vue2如何安裝引入Ant Design

    這篇文章主要介紹了vue2如何安裝引入Ant Design問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue實現(xiàn)標(biāo)簽頁切換/制作tab組件詳細(xì)教程

    vue實現(xiàn)標(biāo)簽頁切換/制作tab組件詳細(xì)教程

    在項目開發(fā)中需要使用vue實現(xiàn)tab頁簽切換功能,所以這里總結(jié)下,這篇文章主要給大家介紹了關(guān)于vue實現(xiàn)標(biāo)簽頁切換/制作tab組件的相關(guān)資料,需要的朋友可以參考下
    2023-11-11
  • 詳解vue中this.$emit()的返回值是什么

    詳解vue中this.$emit()的返回值是什么

    這篇文章主要介紹了詳解vue中this.$emit()的返回值是什么,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue.js element-ui validate中代碼不執(zhí)行問題解決方法

    vue.js element-ui validate中代碼不執(zhí)行問題解決方法

    這篇文章主要介紹了vue.js element-ui validate中代碼不執(zhí)行問題解決方法,需要的朋友可以參考下
    2017-12-12
  • 使用Vue.set()方法實現(xiàn)響應(yīng)式修改數(shù)組數(shù)據(jù)步驟

    使用Vue.set()方法實現(xiàn)響應(yīng)式修改數(shù)組數(shù)據(jù)步驟

    今天小編就為大家分享一篇使用Vue.set()方法實現(xiàn)響應(yīng)式修改數(shù)組數(shù)據(jù)步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Vue中自定義全局組件的實現(xiàn)方法

    Vue中自定義全局組件的實現(xiàn)方法

    這兩天學(xué)習(xí)了Vue.js 感覺組件這個地方知識點挺多的,而且很重要,所以這篇文章主要給大家介紹了關(guān)于Vue中自定義全局組件的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • Vue實現(xiàn)聊天界面

    Vue實現(xiàn)聊天界面

    這篇文章主要為大家詳細(xì)介紹了Vue實現(xiàn)聊天界面,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Vue Element 分組+多選+可搜索Select選擇器實現(xiàn)示例

    Vue Element 分組+多選+可搜索Select選擇器實現(xiàn)示例

    這篇文章主要介紹了Vue Element 分組+多選+可搜索Select選擇器實現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • vue項目部署到nginx/tomcat服務(wù)器的實現(xiàn)

    vue項目部署到nginx/tomcat服務(wù)器的實現(xiàn)

    這篇文章主要介紹了vue項目部署到nginx/tomcat服務(wù)器的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • vue中$emit傳遞多個參(arguments和$event)

    vue中$emit傳遞多個參(arguments和$event)

    本文主要介紹了vue中$emit傳遞多個參(arguments和$event),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02

最新評論