成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

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

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

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

1. 回調(diào)函數(shù)中的參數(shù)

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

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

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')

```

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

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

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

```

((to, from, next) > {

// 判斷要訪問的路由是否需要登錄權(quán)限

if () {

// 判斷是否已經(jīng)登錄

if (isLogin()) {

next()

} else {

// 如果沒有登錄,就跳轉(zhuǎn)到登錄頁面

next({

path: '/login',

query: { redirect: to.fullPath }

})

}

} else {

next()

}

})

```

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

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

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

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

```

((to, from, next) > {

// 判斷是否登錄

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

// 判斷要訪問的路由是否需要登錄權(quán)限

if () {

// 如果已經(jīng)登錄,則展示要訪問的路由頁面

if (isLogin) {

next()

} else {

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

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

next()

} else {

next('/login')

}

}

} else {

next()

}

})

```

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

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

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

```

((to, from, next) > {

alert('切換路由')

next()

})

```

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

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

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

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

```

((to, from, next) > {

// 異步加載新組件

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

component().then(() > {

alert('切換路由')

next()

})

})

```

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

總結(jié)

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

標簽: