国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

解密!Vue路由守衛(wèi)的使用

這篇具有很好參考價值的文章主要介紹了解密!Vue路由守衛(wèi)的使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

什么是路由

對路由這個概念,可能有些人并不很理解,但是路由器大家應該都不陌生。我們可以先來了解一下路由器是什么。路由器現(xiàn)在基本上家家都會有,大家是否好奇過它名字的來源?其實搞懂了路由器名字的來歷,我們就可以搞懂什么是路由了,如下圖:

解密!Vue路由守衛(wèi)的使用,Java,vue.js,智能路由器,前端

解密!Vue路由守衛(wèi)的使用,Java,vue.js,智能路由器,前端

上面兩張圖分別介紹了路由器和路由的功能。首先他們都是用來進行請求分發(fā),并且都是根據(jù)地址進行分發(fā)的。在進行分發(fā)時,只要匹配到了地址就會將請求指向該地址對應的資源。只不過路由器分發(fā)的是網(wǎng)絡(luò)資源,而Vue路由則是分頁指向不同的請求頁面,但本質(zhì)上他們的功能是類似的。

什么是路由守衛(wèi)

路由守衛(wèi),顧名思義就是守護每個請求在路由到目標資源時,檢查該請求是否合法。如上圖所示,對左側(cè)的/test1請求,理論上可以匹配到右側(cè)的 /test1 資源,但有時右側(cè)的 /test1 需要權(quán)限才可以訪問。所以現(xiàn)在就算路由的地址正確,但因為有路由守衛(wèi)的功能,可能會因為未認證或者權(quán)限不夠等問題,我們也不能訪問,這就是路由守衛(wèi)。所以路由守衛(wèi)其實就是對一些請求進行校驗和過濾的防護檢查機制。

路由守衛(wèi)的分類

1. 守衛(wèi)分類

我們先來看看路由守衛(wèi)具體有哪些分類吧。

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

全局前置守衛(wèi)會在用戶發(fā)起請求觸發(fā)導航時被創(chuàng)建,并且時刻處于等待中,等待著請求的到來。

//創(chuàng)建路由對象
const router?=?new VueRouter({?...?})
/**
?*?調(diào)用全局前置守衛(wèi)
?*?參數(shù)1:?to:?跳轉(zhuǎn)的目標路由對象
?*?參數(shù)2: from:?當前要離開的路由
?*?參數(shù)3:?next函數(shù):?類似于Java中過濾器的放行,如果校驗結(jié)束之后放行,讓請求通過
?*/
router.beforeEach((to,?from,?next)?=>?{//?...})


/**
?*?案例使用
?*/
?router.beforeEach((to,?from,?next)?=>?{
?????if?(to.name?!==?'Login'?&&?!isAuthenticated){
?????????//如果未認證,重新回到登錄頁
?????????next({?name:?'Login'?})
?????}else{
?????????//如果已認證直接放行去to指向的目標資源
?????????next()
?????}
?})

1.2 全局解析守衛(wèi)(2.5.0 新增)

全局解析守衛(wèi)是Vue在2.5.0之后新增的守衛(wèi)類型,和全局前置守衛(wèi)類似。但區(qū)別是在導航被確認之前,同時在所有組件內(nèi)守衛(wèi)和異步路由組件被解析之后解析守衛(wèi)就被調(diào)用。

1.3 全局后置鉤子

全局后置鉤子函數(shù)和守衛(wèi)不同,在守衛(wèi)執(zhí)行的過程中,掛載到守衛(wèi)的執(zhí)行周期中,不會影響守衛(wèi)導航本身。
router.afterEach((to,?from)?=>?{
????//因為沒有next函數(shù)所以全局后置鉤子不會影響導航本身
})
1.4 路由獨享守衛(wèi)(私有守衛(wèi),非全局)
路由獨享守衛(wèi)就是將守衛(wèi)設(shè)置到路由對象中,作為此路由的私有守衛(wèi)。
const router?=?new VueRouter({
????routes:?[
????????{
????????????path:?'/foo',
????????????component:?Foo,
????????????beforeEnter:?(to,?from,?next)?=>?{
????????????????//?使用方式和全局前置守衛(wèi)相同
????????????}
????????}
????]
})
1.5 組件內(nèi)守衛(wèi)

組件內(nèi)守衛(wèi),就是在組件內(nèi)部定義的守衛(wèi)。

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

2.守衛(wèi)的完整運行流程

接下來我們來看看守衛(wèi)的完整運行流程:

1.導航被觸發(fā);

2.在失活的組件里調(diào)用 beforeRouteLeave 守衛(wèi);

3.調(diào)用全局的 beforeEach 守衛(wèi);

4.在重用的組件里調(diào)用 beforeRouteUpdate 守衛(wèi);

5.在路由配置里調(diào)用 beforeEnter;

6.解析異步路由組件;

7.在被激活的組件里調(diào)用 beforeRouteEnter;

8.調(diào)用全局的 beforeResolve 守衛(wèi);

9.導航被確認;

10.調(diào)用全局的 afterEach 鉤子;

11.觸發(fā) DOM 更新;

12.調(diào)用 beforeRouteEnter 守衛(wèi)中傳給 next 的回調(diào)函數(shù),創(chuàng)建好的組件實例會作為回調(diào)函數(shù)的參數(shù)傳入。

全局前置守衛(wèi)詳解

全局前置守衛(wèi)是在工作中用的最多的守衛(wèi),一般用于進行資源的保護(權(quán)限認證和授權(quán)認證),下面我們來看看壹哥具體的案例,代碼如下:

<!DOCTYPE html>
<html>
????????<head>
????????????????<meta charset="utf-8"?/>
????????????????<title>路由守衛(wèi)</title>
????????</head>
????????<body>
????????????????<div id="app">
????????????????????????<h4>路由守衛(wèi)案例</h4>
????????????????????????<p>????
????????????????????????????????
????????????????????????????????<router-link to="/foo">Go to Foo</router-link>
????????????????????????????????<router-link to="/bar">Go to Bar</router-link>
????????????????????????</p>
????????????????????????<div>
????????????????????????????????
????????????????????????????????<router-view></router-view>
????????????????????????</div>
????????????????</div>
????????????????
????????????????<script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
????????????????<script src="https://unpkg.com/vue-router@3.0.0/dist/vue-router.js"></script>
????????????????
????????????????<script>
????????????????????????//定義組件
????????????????????????const Foo?=?{?template:?'<div>頁面1(不需要權(quán)限)</div>'?}
????????????????????????const Bar?=?{?template:?'<div>頁面2(需要認證)</div>'?}
????????????????????????const Login?=?{?template:?'<div>登錄頁</div>'?}
????????????????????????//定義路由映射
????????????????????????const routes?=?[
??????????????????????????{?path:?'/foo',name:'Foo',?component:?Foo?},
??????????????????????????{?path:?'/bar',name:'Bar',?component:?Bar?},
??????????????????????????{?path:?'/Login',name:'Login',?component:?Login?}
????????????????????????]
????????????????????????//創(chuàng)建路由
????????????????????????const router?=?new VueRouter({
??????????????????????????routes?//?(縮寫)?相當于?routes:?routes
????????????????????????})
????????????????????????
????????????????????????//路由守衛(wèi)(全局前置路由守衛(wèi))
????????????????????????router.beforeEach((to,?from,?next)?=>?{
????????????????????????????????if(to.name==='Bar'){
????????????????????????????????????????//跳轉(zhuǎn)認證頁面
????????????????????????????????????????next({name:'Login'})
????????????????????????????????}else?if(to.name==='Foo'){
????????????????????????????????????????//直接放行
????????????????????????????????????????next();
????????????????????????????????}else{
????????????????????????????????????????next();
????????????????????????????????}
????????????????????????})
????????????????????????
????????????????????????var app?=?new Vue({
??????????????????????????el:?'#app',
??????????????????????????data:?{
????????????????????????????
??????????????????????????},
??????????????????????????/*?注冊路由?*/
??????????????????????????router:router
????????????????????????})
????????????????</script>
????????</body>
</html>

以上就是Vue中路由守衛(wèi)的一些小秘密,你get到了嗎?大家不妨把最后的案例運行一下,仔細體會一下Vue路由的具體作用。文章來源地址http://www.zghlxwxcb.cn/news/detail-678282.html

到了這里,關(guān)于解密!Vue路由守衛(wèi)的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 若依ruoyi前端vue使用jsencrypt.js加密后端java進行RSA解密(前后端交互RSA加解密)

    目錄 1、前后端RSA加解密實現(xiàn)思路 2、前端 3、后端 按照約定來說公鑰一般用來加密,大家都可以獲取得到,私鑰用來解密,當然你也可以混著用,以下示例是前端通過加密,后端解密. ?-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ81AMIIBCgKCAQEA1+05vAf7m5NcLNLkRtsm gp+QdzcW6MVdayGTGBJG0v

    2024年02月06日
    瀏覽(105)
  • Vue2路由:手動配置使用路由&路由嵌套、路由動態(tài)傳參(:參數(shù),query、props)、編程式導航(back、go)、導航守衛(wèi)

    Vue2路由:手動配置使用路由&路由嵌套、路由動態(tài)傳參(:參數(shù),query、props)、編程式導航(back、go)、導航守衛(wèi)

    過了一遍vue2的router,整理一下小結(jié) 目錄 一、前端路由的概念與原理 1.1 什么是路由 1.2 路由的工作方式 二、vue-router的基本使用 2.1 安裝、配置、使用router 2.2 redirect重定向 三、嵌套路由 3.1 聲明子路由的規(guī)則 3.2 默認子路由 四、動態(tài)路由 4.1 動態(tài)路由的概念 4.2 動態(tài)路由取參方

    2024年02月05日
    瀏覽(24)
  • Vue——路由守衛(wèi)(全局前置路由守衛(wèi)beforeEach、全局后置路由守衛(wèi)router.afterEach、獨享路由守衛(wèi)beforeEnter、組件內(nèi)路由守衛(wèi) )

    Vue——路由守衛(wèi)(全局前置路由守衛(wèi)beforeEach、全局后置路由守衛(wèi)router.afterEach、獨享路由守衛(wèi)beforeEnter、組件內(nèi)路由守衛(wèi) )

    ?作用:對路由進行權(quán)限控制 分類:全局守衛(wèi)、獨享守衛(wèi)、組件內(nèi)守衛(wèi) 目錄 一、全局前置路由守衛(wèi)router.beforeEach(切換之前調(diào)用,to、from、next參數(shù)) 改進代碼 二、全局后置路由守衛(wèi)router.afterEach( 切換之后調(diào)用,to、from參數(shù),沒有next參數(shù)) 三、獨享路由守衛(wèi)beforeEnter(某一

    2024年02月08日
    瀏覽(20)
  • vue - 路由守衛(wèi)

    Vue路由守衛(wèi)是一種機制,用于在導航過程中對路由進行監(jiān)控和控制。Vue?Router提供了三種類型的路由守衛(wèi): 1.?全局前置守衛(wèi):router.beforeEach 2.?全局解析守衛(wèi):router.beforeResolve 3.?全局后置守衛(wèi):router.afterEach 這些守衛(wèi)可以用來進行權(quán)限驗證、頁面加載前的處理、頁面切換時的

    2024年04月25日
    瀏覽(25)
  • vue三種路由守衛(wèi)詳解

    vue三種路由守衛(wèi)詳解

    查看本專欄目錄 關(guān)于作者 還是大劍師蘭特 :曾是美國某知名大學計算機專業(yè)研究生,現(xiàn)為航空航海領(lǐng)域高級前端工程師;CSDN知名博主,GIS領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技術(shù)開發(fā),歡迎加底部微信,一起交流。 熱門推薦 內(nèi)容鏈接

    2024年02月20日
    瀏覽(23)
  • 編程式導航、緩存路由組件、路由守衛(wèi)、Vue UI組件庫【VUE】

    作用:不借助 router-link 實現(xiàn)路由跳轉(zhuǎn),讓路由跳轉(zhuǎn)更加靈活 具體編碼: 作用:讓不展示的路由組件保持掛載,不被銷毀 具體編碼: 作用:路由組件所獨有的兩個鉤子,用于捕獲路由組件的激活狀態(tài)。 具體名字: (1)activated路由組件被激活時觸發(fā) (2)deactivated路由組件失

    2024年02月03日
    瀏覽(54)
  • vue-router路由守衛(wèi)

    在我們使用vue-router的時候,路由守衛(wèi)就像監(jiān)聽器、攔截器一樣,幫我們做一些鑒權(quán)等操作,vue中的路由守衛(wèi)分為全局路由守衛(wèi)、獨享路由守衛(wèi)、組件內(nèi)的路由守衛(wèi) 全局路由守衛(wèi) :?beforeEach、 afterEach 組件獨享路由守衛(wèi) :beforeEnter、 beforeLeave 組件內(nèi)路由守衛(wèi) :beforeRouteEnter、

    2024年02月11日
    瀏覽(16)
  • React/Vue實現(xiàn)路由鑒權(quán)/導航守衛(wèi)/路由攔截

    1、實現(xiàn)思路 自己封裝? AuthRoute ?路由鑒權(quán)高階組件,實現(xiàn)未登錄攔截,并跳轉(zhuǎn)到登錄頁面 思路為:判斷本地是否有token,如果有,就返回子組件,否則就重定向到登錄Login 2、實現(xiàn)步驟 在 components 目錄中,創(chuàng)建 AuthRoute/index.js 文件 判斷是否登錄 登錄時,直接渲染相應頁面組

    2024年02月15日
    瀏覽(25)
  • 【學Vue就跟玩一樣】Vue中的路由與多種守衛(wèi)

    【學Vue就跟玩一樣】Vue中的路由與多種守衛(wèi)

    vue的一個插件庫,專門用來實現(xiàn)對 SPA應用 的單頁Web應用(single page web application, SPA)。整個應用只有一個完整的頁面。點擊頁面中的導航鏈接不會刷新頁面,只會做頁面的局部更新。數(shù)據(jù)需要通過ajax請求獲取。 一個路由就是一組映射關(guān)系(key :value) key 為路徑, value可能是funct

    2024年02月02日
    瀏覽(57)
  • Vue--》深入理解 Vue 3 導航守衛(wèi),掌握前端路由的靈魂技能!

    Vue--》深入理解 Vue 3 導航守衛(wèi),掌握前端路由的靈魂技能!

    目錄 vue3導航守衛(wèi)講解與使用 element-ui的安裝與使用 配置路由和設(shè)置路徑別名

    2024年02月05日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包