Vue路由守衛

目錄

  • 一、全局路由守衛
  • 二、獨享路由守衛
  • 三、組件內路由守衛

一、全局路由守衛

作用全局

  1. router.beforeEach全局前置路由守衛—初始化的時候被調用、每次路由切換之前被調用
  2. router.afterEach全局后置路由守衛—初始化的時候被調用、每次路由切換之后被調用

配置

// 該文件專門用于創建整個應用的路由器
import VueRouter from 'vue-router'
//引入組件
import About from '../pages/About'
import Home from '../pages/Home'
import News from '../pages/News'
import Message from '../pages/Message'
import Detail from '../pages/Detail'//創建并暴露一個路由器
const router =  new VueRouter({routes:[{name:'guanyu',path:'/about',component:About,meta:{title:'關于'}},{name:'zhuye',path:'/home',component:Home,meta:{title:'主頁'},children:[{name:'xinwen',path:'news',component:News,meta:{isAuth:true,title:'新聞'}},{name:'xiaoxi',path:'message',component:Message,meta:{isAuth:true,title:'消息'},children:[{name:'xiangqing',path:'detail',component:Detail,meta:{isAuth:true,title:'詳情'},//props的第一種寫法,值為對象,該對象中的所有key-value都會以props的形式傳給Detail組件。// props:{a:1,b:'hello'}//props的第二種寫法,值為布爾值,若布爾值為真,就會把該路由組件收到的所有params參數,以props的形式傳給Detail組件。// props:true//props的第三種寫法,值為函數props($route){return {id:$route.query.id,title:$route.query.title,a:1,b:'hello'}}}]}]}]
})//全局前置路由守衛————初始化的時候被調用、每次路由切換之前被調用
router.beforeEach((to,from,next)=>{console.log('前置路由守衛',to,from)if(to.meta.isAuth){ //判斷是否需要鑒權if(localStorage.getItem('school')==='atguigu'){next()}else{alert('學校名不對,無權限查看!')}}else{next()}
})//全局后置路由守衛————初始化的時候被調用、每次路由切換之后被調用
router.afterEach((to,from)=>{console.log('后置路由守衛',to,from)document.title = to.meta.title || '硅谷系統'
})export default router

二、獨享路由守衛

在Vue Router中,獨享路由守衛是一種路由守衛函數,用于在進入或離開特定路由時執行額外的邏輯或驗證。獨享路由守衛只會應用于特定的路由,而不是全局的所有路由。

  1. beforeEnter:在創建路由時,可以通過在路由配置中定義beforeEnter守衛函數來應用特定的前置邏輯
  2. beforeRouteEnter:在進入特定路由之前執行,但在路由組件實例被創建之前執行。
  3. beforeRouteLeave:在離開特定路由之前執行,用于執行一些離開前的清理邏輯或確認操作。

// 該文件專門用于創建整個應用的路由器
import VueRouter from 'vue-router'
//引入組件
import About from '../pages/About'
import Home from '../pages/Home'
import News from '../pages/News'
import Message from '../pages/Message'
import Detail from '../pages/Detail'//創建并暴露一個路由器
const router =  new VueRouter({routes:[{name:'guanyu',path:'/about',component:About,meta:{title:'關于'}},{name:'zhuye',path:'/home',component:Home,meta:{title:'主頁'},children:[{name:'xinwen',path:'news',component:News,meta:{isAuth:true,title:'新聞'},beforeEnter: (to, from, next) => {console.log('獨享路由守衛',to,from)if(to.meta.isAuth){ //判斷是否需要鑒權if(localStorage.getItem('school')==='atguigu'){next()}else{alert('學校名不對,無權限查看!')}}else{next()}},beforeRouteEnter (to, from, next) {//通過回調函數處理進一步的邏輯next()},beforeRouteLeave (to, from, next) {// 執行清理邏輯// 確認操作或其他邏輯next();}},{name:'xiaoxi',path:'message',component:Message,meta:{isAuth:true,title:'消息'},children:[{name:'xiangqing',path:'detail',component:Detail,meta:{isAuth:true,title:'詳情'},//props的第三種寫法,值為函數props($route){return {id:$route.query.id,title:$route.query.title,a:1,b:'hello'}}}]}]}]
})
//全局后置路由守衛————初始化的時候被調用、每次路由切換之后被調用
router.afterEach((to,from)=>{console.log('后置路由守衛',to,from)document.title = to.meta.title || '硅谷系統'
})export default router

三、組件內路由守衛

在Vue中,可以利用路由守衛函數來控制在組件內部導航發生前后執行的邏輯。組件內的路由守衛與全局路由守衛相比,更專注于組件級別的導航鉤子。

  1. beforeRouteEnter:在進入路由前被調用。在這個守衛內部,無法通過this訪問組件實例,因為它在組件實例被創建之前調用。但是,可以通過回調函數來接收組件實例,并在回調函數中訪問和操作組件。
    export default {beforeRouteEnter (to, from, next) {next(vm => {// 通過 `vm` 訪問組件實例vm.doSomething();});},methods: {doSomething () {// 處理業務邏輯}}
    }
    
  2. beforeRouteUpdate:在當前路由被復用但是參數發生變化時調用,例如,從user/1導航至user/2。可以在該守衛中對組件進行更新操作。
  3. beforeRouteLeave:在組件離開當前路由前調用。可以使用該守衛來執行離開前的邏輯操作,例如保存數據或彈出確認對話框等。

<template><h2>我是About的內容</h2>
</template><script>export default {name:'About',//通過路由規則,進入該組件時被調用beforeRouteEnter (to, from, next) {console.log('About--beforeRouteEnter',to,from)if(to.meta.isAuth){ //判斷是否需要鑒權if(localStorage.getItem('school')==='atguigu'){next()}else{alert('學校名不對,無權限查看!')}}else{next()}},//通過路由規則,離開該組件時被調用beforeRouteLeave (to, from, next) {console.log('About--beforeRouteLeave',to,from)next()}}
</script>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40114.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40114.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40114.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

git使用規范

Git規范&#xff08;公司使用gitlab&#xff09; 版本規范 前端項目使用語義化版本進行發布: 版本格式&#xff1a;主版本號.次版本號.修訂號&#xff0c;版本號遞增規則如下&#xff1a; 主版本號&#xff1a;當你做了不兼容的 API 修改&#xff0c;次版本號&#xff1a;當…

uniapp 使用 uni push 2.0 推送消息

因為之前使用uni push 1.0&#xff0c;開通賬號和配置廠商就不寫了。只說一點&#xff0c;配置廠商很重要&#xff0c;不然收不到離線推送的消息。那么就直接開始咯&#xff01;&#xff01;&#xff01; 一、創建并關聯云服務空間 1.創建云服務空間&#xff0c;右鍵項目【創…

Java進階(3)——手動實現ArrayList 源碼的初步理解分析 數組插入數據和刪除數據的問題

目錄 引出手動實現ArrayList定義接口MyList<T>寫ArrayList的實現類增加元素刪除元素 寫測試類進行測試數組插入數據? 總結 引出 1.ArrayList的結構分析&#xff0c;可迭代接口&#xff0c;是List的實現&#xff1b; 2.數組增加元素和刪除元素的分析&#xff0c;何時擴容…

利用HTTP代理實現請求路由

嘿&#xff0c;大家好&#xff01;作為一名專業的爬蟲程序員&#xff0c;我知道構建一個高效的分布式爬蟲系統是一個相當復雜的任務。在這個過程中&#xff0c;實現請求的路由是非常關鍵的。今天&#xff0c;我將和大家分享一些關于如何利用HTTP代理實現請求路由的實用技巧&…

數據結構----哈夫曼樹

這里寫目錄標題 基本概念引子基本概念各種路徑長度各種帶權路徑長度結點的帶權路徑長度樹的帶權路徑長度哈夫曼樹 哈夫曼樹的構造理論基礎構造思想總結 哈夫曼樹的實現哈夫曼編碼前綴編碼哈夫曼編碼的思想案例代碼實現 編碼與解碼 基本概念 引子 哈夫曼樹就是尋找構造最優二叉…

Docker容器基礎

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 一、Docker概述1、docker是什么2、Docker的設計宗旨3、容器在內核中支持2種重要技術&#xff1a; 三、Docker的核心概念四、Docker相關命令1.安裝依賴包2.設置阿里云…

無線測溫產品在半導體制造項目的應用

摘 要&#xff1a;半導體被譽為“制造業的大腦”&#xff0c;在關系國家安全和國民經濟命脈的主要行業和關鍵領域占據支配地位&#xff0c;是國民經濟的重要支柱。 隨著數字技術的發展和數字經濟在國民經濟中所占比重越來越高&#xff0c;半導體產業的重要性還會進一步提升。安…

C++QT教程3——手冊4.11.1自帶教程(筆記)——創建一個QT快速應用

文章目錄 創建一個QT快速應用創建項目創建主視圖添加應用邏輯為視圖添加動畫素材文件 參考文章 創建一個QT快速應用 本教程使用內置的QML類型&#xff0c;介紹了Qt Quick的基本概念。有關可以選擇的用戶界面選項的更多信息&#xff0c;請參閱用戶界面。 本教程描述了如何使用…

部署mysql到win10電腦上

中間出現了很多問題&#xff0c; 記錄一下 我這邊是去官網下載的 &#xff0c;鏈接&#xff1a;https://dev.mysql.com/downloads/mysql/ 我這邊選了不是最新版本的MySQL&#xff0c;因為第一次安裝8.1.0版本的&#xff0c;死活運行不起來&#xff0c;直接卸載安重裝了&#x…

常用的分布式計算引擎

記錄一下&#xff0c;作為備忘。 常用的分布式計算引擎 多表關聯的問題&#xff0c;由于NoSQL數據庫主要用于海量存儲和單表查詢&#xff0c;一般都不支持join&#xff0c;需借助更上層的計算框架來實現多表關聯&#xff0c;比如: 計算框架支持數據源執行效率Hive本地文件、…

神經網絡基礎-神經網絡補充概念-35-為什么正則化可以減少過擬合

概念 正則化可以減少過擬合的原因在于它通過限制模型的復雜性來約束參數的取值范圍&#xff0c;從而提高了模型的泛化能力。過擬合是指模型在訓練集上表現很好&#xff0c;但在未見過的數據上表現不佳&#xff0c;這通常是因為模型過于復雜&#xff0c;過多地擬合了訓練數據中…

自己動手寫數據庫系統:實現一個小型SQL解釋器(中)

我們接上節內容繼續完成SQL解釋器的代碼解析工作。下面我們實現對update語句的解析&#xff0c;其語法如下&#xff1a; UpdateCmd -> INSERT | DELETE | MODIFY | CREATE Create -> CreateTable | CreateView | CreateIndex Insert -> INSERT INTO ID LEFT_PARAS Fie…

后端項目打包上傳服務器記錄

后端項目打包上傳服務器記錄 文章目錄 后端項目打包上傳服務器記錄1、項目打包2、jar包上傳服務器 本文記錄打包一個后端項目&#xff0c;上傳公司服務器的過程。 1、項目打包 通過IDEA的插件進行打包&#xff1a; 打成一個jar包&#xff0c;jar包的位置在控制臺可以看到。 2、…

ssm蜀都天香酒樓網站設計與實現

ssm蜀都天香酒樓的網站設計與實現028 開發工具&#xff1a;idea 數據庫mysql5.7 數據庫鏈接工具&#xff1a;navcat,小海豚等 技術&#xff1a;ssm 摘要 近年來&#xff0c;信息化管理行業的不斷興起&#xff0c;使得人們的日常生活越來越離不開計算機和互聯網技術。首…

機器學習基礎(六)

貝葉斯分析 介紹 “貝葉斯”是指托馬斯貝葉斯(1702–1761),他證明了一個特例,也就是現在的貝葉斯定理的特例。 貝葉斯定理(英語:Bayes theorem)是概率論中的一個定理,描述在已知一些條件下,某事件的發生概率。比如,如果已知某種健康問題與壽命有關,使用貝葉斯定理則…

selenium語法進階+常用API

目錄 瀏覽器操作 瀏覽器回退&#xff0c;前進 與刷新 瀏覽器窗口設置大小 瀏覽器設置寬高 瀏覽器窗口最大化 瀏覽器控制滾動條 信息打印 打印頁面的標題和當前頁面的URL 定位一組元素 鼠標和鍵盤事件 鍵盤 鼠標 下拉框操作 通過索引定位&#xff08;se…

【BASH】回顧與知識點梳理(三十二)

【BASH】回顧與知識點梳理 三十二 三十二. SELinux 初探32.1 什么是 SELinux當初設計的目標&#xff1a;避免資源的誤用傳統的文件權限與賬號關系&#xff1a;自主式訪問控制, DAC以政策規則訂定特定進程讀取特定文件&#xff1a;委任式訪問控制, MAC 32.2 SELinux 的運作模式安…

安科瑞變電所運維平臺在電力系統中應用分析

摘要&#xff1a;現代居民生活、工作對電力資源的需求量相對較多&#xff0c;給我國的電力產業帶來了良好的發展機遇與挑戰。探索電力系統基本構成&#xff0c; 將變電運維安全管理以及相應的設備維護工作系統性開展&#xff0c;能夠根據項目實踐工作要求&#xff0c;將滿足要求…

C語言暑假刷題沖刺篇——day2

目錄 一、選擇題 二、編程題 &#x1f388;個人主頁&#xff1a;庫庫的里昂 &#x1f390;CSDN新晉作者 &#x1f389;歡迎 &#x1f44d;點贊?評論?收藏?收錄專欄&#xff1a;C語言每日一練 ?其他專欄&#xff1a;代碼小游戲C語言初階&#x1f91d;希望作者的文章能對你…

最小生成樹,prim算法

Prim算法和Kruskal算法都是用于解決最小生成樹問題的經典算法&#xff0c;它們在不同情況下有不同的適用性和特點。 Prim算法&#xff1a; Prim算法是一種貪心算法&#xff0c;用于構建一個無向圖的最小生成樹。算法從一個初始節點開始&#xff0c;逐步添加與當前樹連接且具有…