欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue中路由守衛(wèi)的具體使用

 更新時(shí)間:2021年12月03日 15:50:06   作者:學(xué)學(xué)學(xué)無(wú)止境  
導(dǎo)航守衛(wèi)就是路由跳轉(zhuǎn)前、中、后過(guò)程中的一些鉤子函數(shù),本文詳細(xì)的介紹了Vue中路由守衛(wèi)的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下

作用:對(duì)路由進(jìn)行權(quán)限控制

分類(lèi):全局守衛(wèi)、獨(dú)享守衛(wèi)、組件內(nèi)守衛(wèi)

1.全局守衛(wèi)

1.1 全局前置守衛(wèi)

顧名思義,前置守衛(wèi)主要是在你進(jìn)行路由跳轉(zhuǎn)之前根據(jù)你的狀態(tài)去 進(jìn)行一系列操作(全局前置是為在路由初始化以及跳轉(zhuǎn)之前都會(huì)觸發(fā))

你可以使用router.beforeEach注冊(cè)一個(gè)全局前置守衛(wèi)(Each:每個(gè),即在任意一個(gè)路由跳轉(zhuǎn)的時(shí)候都會(huì)觸發(fā))

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

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

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

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

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

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

3.next('/")或者next( { path: '/' } ):跳轉(zhuǎn)到一個(gè)同的地址。當(dāng)前的導(dǎo)航被中斷,然后進(jìn)行下一個(gè)新的導(dǎo)航。你可以想next傳遞任意對(duì)象,且允許設(shè)置諸如replace:true、name:'home‘ 之類(lèi)的選項(xiàng)以及任何用下router-link的 to prop或者router.push中的選項(xiàng)

確保next函數(shù)在任何給定的導(dǎo)航守衛(wèi)中被嚴(yán)格調(diào)用一次,它可以出現(xiàn)多余一次,但是只能在所有的邏輯路徑都不重疊的情況下,否則鉤子永遠(yuǎn)都不會(huì)被解析或者錯(cuò)誤。

1.1.1 使用

可以打印出from、to、next看他們究竟會(huì)保存那些信息

舉例

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'
import News from '../views/News.vue'
import Message from '../views/Message.vue'
 
Vue.use(VueRouter)
 
const routes = [{
    path: '/home',
    name: 'Home',
    component: Home,
    children:[
      {
        path: 'message', //此處不要寫(xiě)成:/news
        component: Message
      }
    ]
  },
  {
    path: '/about',
    name: 'aboutName',
    component: About,
    children: [{ //通過(guò)children配置子級(jí)路由
      path: 'news', //此處不要寫(xiě)成:/news
      component: News
    }]
  }
]
 
const router = new VueRouter({
  routes
})
 
//全局前置路由守衛(wèi)---初始化的時(shí)候被調(diào)用、每次路由切換的時(shí)候被調(diào)用
router.beforeEach((to, from, next) => {
  console.log(to);
  //這里是一個(gè)簡(jiǎn)單的例子
  //即判斷用戶(hù)是否進(jìn)入了需要鑒權(quán)的路由下(這里距離為news和message)
  if (to.path == '/home/message' || to.path === '/about/news') {
    //如果進(jìn)入了,那就判斷本地是否緩存了信息(這里模擬登錄的token)
    if (localStorage.getItem('name') === 'haungzhizhen') {
      next()
    }
  }else{
    //如果不是,則直接放心即可
    next()
  }
})
export default router

上面這個(gè)例子有個(gè)不足之處是,當(dāng)需要鑒權(quán)的路由很多的時(shí)候,那你需要一個(gè)一個(gè)的去判斷?那大可不必,因此這里引入路由的另一屬性,即meta,可以在每個(gè)路由中進(jìn)行配置,一般用來(lái)標(biāo)識(shí)具有標(biāo)識(shí)性的屬性,可以用力啊同意判斷,具體如下:

//使用meta
router.beforeEach((to, from, next) => {
  console.log(to);
  if (to.meta.isAuth) {//判斷是否需要鑒權(quán)
    if (localStorage.getItem('name') === 'haungzhizhen') {
      next()
    }
  } else {
    next()
  }
})

1.2 全局后置路由守衛(wèi)

//全局后置路由守衛(wèi)---初始化的時(shí)候被調(diào)用、每次路由切換之后被調(diào)用
router.afterEach((to, from) => {
  if (to.meta.title) {
    document.title = to.meta.title || '路由跳轉(zhuǎn)舉例'//修改網(wǎng)頁(yè)的title
  }else{
    document.title = 'vue_test'
  }
})

1.3 整合

2. 路由獨(dú)享的守衛(wèi)

你可以在路由配置直接定義beforeEnter守衛(wèi),這些參數(shù)與全局前置守衛(wèi)的方法參數(shù)是一樣的

const router = new VueRouter({
  routes: [
    {
      path: '/foo',
      component: Foo,
      beforeEnter: (to, from, next) => {
        // ...
      }
    }
  ]
})

3.組件內(nèi)的守衛(wèi)

最后,你可以在路由組件內(nèi)直接定義一下路由導(dǎo)航守衛(wèi):

  • beforeRouterEnter
  • beforeRouterUpdate
  • beforeRouterLeave
const Foo = {
  template: `...`,
  beforeRouteEnter(to, from, next) {
    // 在渲染該組件的對(duì)應(yīng)路由被 confirm 前調(diào)用
    // 不!能!獲取組件實(shí)例 `this`
    // 因?yàn)楫?dāng)守衛(wèi)執(zhí)行前,組件實(shí)例還沒(méi)被創(chuàng)建
  },
  beforeRouteUpdate(to, from, next) {
    // 在當(dāng)前路由改變,但是該組件被復(fù)用時(shí)調(diào)用
    // 舉例來(lái)說(shuō),對(duì)于一個(gè)帶有動(dòng)態(tài)參數(shù)的路徑 /foo/:id,在 /foo/1 和 /foo/2 之間跳轉(zhuǎn)的時(shí)候,
    // 由于會(huì)渲染同樣的 Foo 組件,因此組件實(shí)例會(huì)被復(fù)用。而這個(gè)鉤子就會(huì)在這個(gè)情況下被調(diào)用。
    // 可以訪(fǎng)問(wèn)組件實(shí)例 `this`
  },
  beforeRouteLeave(to, from, next) {
    // 導(dǎo)航離開(kāi)該組件的對(duì)應(yīng)路由時(shí)調(diào)用
    // 可以訪(fǎng)問(wèn)組件實(shí)例 `this`
  }
}

到此這篇關(guān)于Vue中路由守衛(wèi)的具體使用的文章就介紹到這了,更多相關(guān)Vue 路由守衛(wèi)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue路由跳轉(zhuǎn)的4種方式小結(jié)

    Vue路由跳轉(zhuǎn)的4種方式小結(jié)

    本文主要介紹了Vue路由跳轉(zhuǎn)的4種方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Vue+Canvas繪圖使用的講解

    Vue+Canvas繪圖使用的講解

    這篇文章主要介紹了Vue+Canvas繪圖的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue3組件間的通信方式詳解

    Vue3組件間的通信方式詳解

    這篇文章主要介紹了Vue3組件間的通信方式,在使用vue時(shí),我們經(jīng)常會(huì)把不同的模塊拆分成不同的組件,而組件之間有的需要傳遞數(shù)據(jù),所以組件間的數(shù)據(jù)通信就非常重要了
    2023-04-04
  • elementui中tabel組件的scope.$index的使用及說(shuō)明

    elementui中tabel組件的scope.$index的使用及說(shuō)明

    這篇文章主要介紹了elementui中tabel組件的scope.$index的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue的props配置項(xiàng)詳解

    Vue的props配置項(xiàng)詳解

    這篇文章主要為大家詳細(xì)介紹了Vue的props配置項(xiàng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • Vue實(shí)現(xiàn)多頁(yè)簽組件

    Vue實(shí)現(xiàn)多頁(yè)簽組件

    這篇文章主要介紹了Vue實(shí)現(xiàn)多頁(yè)簽組件的方法,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下
    2021-01-01
  • vue時(shí)間格式化實(shí)例代碼

    vue時(shí)間格式化實(shí)例代碼

    本篇文章主要介紹了vue時(shí)間格式化實(shí)例代碼,這里整理了詳細(xì)的代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • vue中使用百度腦圖kityminder-core二次開(kāi)發(fā)的實(shí)現(xiàn)

    vue中使用百度腦圖kityminder-core二次開(kāi)發(fā)的實(shí)現(xiàn)

    這篇文章主要介紹了vue中使用百度腦圖kityminder-core二次開(kāi)發(fā)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • vue項(xiàng)目依賴(lài)升級(jí)報(bào)錯(cuò)處理方式

    vue項(xiàng)目依賴(lài)升級(jí)報(bào)錯(cuò)處理方式

    這篇文章主要介紹了vue項(xiàng)目依賴(lài)升級(jí)報(bào)錯(cuò)處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue3實(shí)現(xiàn)動(dòng)態(tài)路由及菜單

    vue3實(shí)現(xiàn)動(dòng)態(tài)路由及菜單

    這篇文章主要介紹了vue3實(shí)現(xiàn)動(dòng)態(tài)路由及菜單,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評(píng)論