最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue2.0 實(shí)現(xiàn)導(dǎo)航守衛(wèi)(路由守衛(wèi))

 更新時間:2018年05月21日 09:43:58   作者:阿龍丶along  
vue-route 提供的 beforeRouteUpdate 可以方便地實(shí)現(xiàn)導(dǎo)航守衛(wèi)(navigation-guards)。這篇文章主要介紹了vue2.0 實(shí)現(xiàn)導(dǎo)航守衛(wèi)(路由守衛(wèi))的相關(guān)知識,需要的朋友可以參考下

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

對此,vue-route 提供的 beforeRouteUpdate 可以方便地實(shí)現(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 實(shí)例,則導(dǎo)航會被終止且該錯誤會被傳遞給 router.onError() 注冊過的回調(diào)。

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

下面寫一個例子:

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

當(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é)

以上所述是小編給大家介紹的vue2.0 實(shí)現(xiàn)導(dǎo)航守衛(wèi)(路由守衛(wèi)),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • vue的keep-alive中使用EventBus的方法

    vue的keep-alive中使用EventBus的方法

    keep-alive是Vue提供的一個抽象組件,用來對組件進(jìn)行緩存,從而節(jié)省性能,由于是一個抽象組件,所以在頁面渲染完畢后不會被渲染成一個DOM元素。這篇文章主要介紹了vue的keep-alive中使用EventBus的方法,需要的朋友可以參考下
    2019-04-04
  • vue實(shí)現(xiàn)網(wǎng)易云音樂純界面

    vue實(shí)現(xiàn)網(wǎng)易云音樂純界面

    這篇文章主要為大家介紹了vue實(shí)現(xiàn)網(wǎng)易云音樂純界面過程詳解,附含詳細(xì)源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Vue集成lodop插件實(shí)現(xiàn)打印功能

    Vue集成lodop插件實(shí)現(xiàn)打印功能

    lodop 取意自“l(fā)oad or print”,是一款優(yōu)秀的 Web 打印控件。本文將在Vue中集成lodop插件實(shí)現(xiàn)打印功能,感興趣的小伙伴可以了解一下
    2023-01-01
  • vue3導(dǎo)入excel并解析excel數(shù)據(jù)渲染到表格中(純前端實(shí)現(xiàn))

    vue3導(dǎo)入excel并解析excel數(shù)據(jù)渲染到表格中(純前端實(shí)現(xiàn))

    在Vue中實(shí)現(xiàn)導(dǎo)出Excel有多種方式,可以通過前端實(shí)現(xiàn),也可以通過前后端配合實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于vue3導(dǎo)入excel并解析excel數(shù)據(jù)渲染到表格中的相關(guān)資料,文中介紹的方法是純前端實(shí)現(xiàn),需要的朋友可以參考下
    2024-04-04
  • el-table實(shí)現(xiàn)給每行添加loading效果案例

    el-table實(shí)現(xiàn)給每行添加loading效果案例

    這篇文章主要介紹了el-table實(shí)現(xiàn)給每行添加loading效果案例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Vue+ElementUI table實(shí)現(xiàn)表格分頁

    Vue+ElementUI table實(shí)現(xiàn)表格分頁

    這篇文章主要為大家詳細(xì)介紹了Vue+ElementUI table實(shí)現(xiàn)表格分頁,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 詳解vue-router和vue-cli以及組件之間的傳值

    詳解vue-router和vue-cli以及組件之間的傳值

    這篇文章主要介紹了詳解vue-router和vue-cli以及組件之間的傳值,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Vue.js鼠標(biāo)懸浮更換圖片功能

    Vue.js鼠標(biāo)懸浮更換圖片功能

    這篇文章主要為大家詳細(xì)介紹了Vue.js實(shí)現(xiàn)鼠標(biāo)懸浮更換圖片功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • vue.js實(shí)現(xiàn)備忘錄demo

    vue.js實(shí)現(xiàn)備忘錄demo

    這篇文章主要為大家詳細(xì)介紹了vue.js實(shí)現(xiàn)備忘錄的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • vue實(shí)現(xiàn)各種文件文檔下載及導(dǎo)出示例

    vue實(shí)現(xiàn)各種文件文檔下載及導(dǎo)出示例

    這篇文章主要介紹了vue實(shí)現(xiàn)各種文件文檔下載及導(dǎo)出示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06

最新評論

尚义县| 万全县| 同江市| 承德市| 庆元县| 白水县| 交城县| 根河市| 外汇| 沙雅县| 平邑县| 淮滨县| 沙田区| 贺州市| 博湖县| 道真| 台东市| 长汀县| 历史| 西丰县| 镇赉县| 久治县| 新竹市| 罗定市| 乐山市| 调兵山市| 会东县| 久治县| 灵璧县| 阿巴嘎旗| 巴彦淖尔市| 海阳市| 常熟市| 隆尧县| 巩义市| 襄汾县| 漳平市| 长宁县| 泰安市| 新化县| 横山县|