卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

如何在Vue中設置全局路由守衛(wèi)

Vue.js是一款流行的JavaScript框架,被廣泛用于構建現代單頁應用程序。而在使用Vue.js開發(fā)應用程序時,我們經常需要對路由進行控制。因此,在本文中,我們將重點介紹如何在Vue.js中設置

Vue.js是一款流行的JavaScript框架,被廣泛用于構建現代單頁應用程序。而在使用Vue.js開發(fā)應用程序時,我們經常需要對路由進行控制。因此,在本文中,我們將重點介紹如何在Vue.js中設置全局路由守衛(wèi)。

1. 回調函數中的參數

在Vue.js中,路由守衛(wèi)是在路由切換過程中執(zhí)行的回調函數。這些回調函數會接收三個參數:to、from和next。

其中,to參數表示要進入的路由路徑,而from參數表示要離開的路由路徑。而最后一個參數next,是一個函數,它決定是否展示你要看到的路由頁面。如果你不調用next()函數,路由將無法正常跳轉。

2. 在main.js中設置全局守衛(wèi)

在Vue.js中,我們可以通過在main.js文件中實例化一個路由對象來設置全局守衛(wèi)。例如:

```

import Vue from 'vue'

import App from ''

import router from './router'

false

((to, from, next) > {

// 進行路由守衛(wèi)的邏輯判斷

})

new Vue({

router,

render: h > h(App),

}).$mount('app')

```

在上面的代碼中,我們通過調用`()`函數來設置全局路由守衛(wèi)。這個函數接收一個回調函數作為參數,該函數將被調用每次當路由發(fā)生變化時。

3. 判斷當前將要進入的路徑是否為登錄或注冊

在實現全局路由守衛(wèi)的回調函數中,我們需要編寫邏輯判斷語句。例如,可以通過判斷參數是否為登錄或注冊頁面,來判斷用戶是否已經登錄。

```

((to, from, next) > {

// 判斷要訪問的路由是否需要登錄權限

if () {

// 判斷是否已經登錄

if (isLogin()) {

next()

} else {

// 如果沒有登錄,就跳轉到登錄頁面

next({

path: '/login',

query: { redirect: to.fullPath }

})

}

} else {

next()

}

})

```

在上面的代碼中,我們首先通過``屬性來判斷要訪問的路由是否需要登錄權限。如果需要,我們就調用`isLogin()`函數來判斷用戶是否已經登錄。如果已經登錄,就調用`next()`函數來展示要訪問的路由頁面。如果未登錄,則調用`next()`函數并傳遞登錄頁面的路由信息,以便用戶完成登錄之后,自動跳轉到訪問原來要訪問的路由頁面。

4. 實現未登錄狀態(tài)下,展示登錄界面的效果

通過以上的方法,我們已經可以實現在用戶未登錄狀態(tài)下,自動跳轉到登錄界面。但是,如果我們希望在未登錄狀態(tài)下,始終展示的都是登錄界面,該怎么辦呢?

我們可以通過在路由守衛(wèi)回調函數中添加額外的判斷邏輯,來實現這個功能。

```

((to, from, next) > {

// 判斷是否登錄

const isLogin ('token') 'true' ? true : false

// 判斷要訪問的路由是否需要登錄權限

if () {

// 如果已經登錄,則展示要訪問的路由頁面

if (isLogin) {

next()

} else {

// 如果未登錄,則展示登錄頁面

if ( '/login' || '/register') {

next()

} else {

next('/login')

}

}

} else {

next()

}

})

```

在上面的代碼中,我們首先通過調用`('token')`函數來獲取用戶登錄狀態(tài)。如果已經登錄,則調用`next()`函數來展示要訪問的路由頁面。如果未登錄,則調用`next()`函數并判斷當前要訪問的路徑是否為登錄或注冊頁面。如果是,就展示當前界面。如果不是,則調用`next()`函數并跳轉到登錄頁面。

5. 每次切換路由時彈出alert提示框

有時候,我們需要在每次切換路由時彈出alert提示框??梢酝ㄟ^在路由守衛(wèi)回調函數中添加以下代碼實現:

```

((to, from, next) > {

alert('切換路由')

next()

})

```

在上面的代碼中,我們直接調用`alert()`函數來彈出提示框。然后,通過調用`next()`函數來展示要訪問的路由頁面。

6. 解決alert輸出hello undefined的問題

最后,我們需要解決另一個問題。即,在路由切換時,可能會出現alert輸出"hello undefined"的情況。這是因為alert函數在渲染數據前就已經調用了。

為了解決這個問題,我們可以使用Vue.js提供的異步加載組件的特性。具體地,我們可以使用`component()`函數來加載一個異步組件,并在其回調函數中調用alert方法。

```

((to, from, next) > {

// 異步加載新組件

const component () > import('@/components/HelloWorld')

component().then(() > {

alert('切換路由')

next()

})

})

```

在上面的代碼中,我們首先通過調用`component()`函數來加載一個異步組件。然后,在其回調函數中調用alert方法,并通過調用`next()`函數來展示要訪問的路由頁面。這樣,就可以解決alert輸出"hello undefined"的問題了。

總結

本文介紹了在Vue.js中設置全局路由守衛(wèi)的方法。我們首先介紹了回調函數中的參數,然后演示了如何在main.js中設置全局守衛(wèi)。接著,我們詳細講解了如何判斷是否已經登錄,以及如何實現未登錄狀態(tài)下的展示效果。最后,我們還解決了alert輸出"hello undefined"的問題。

標簽: