欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue 項(xiàng)目中當(dāng)訪問路由不存在的時(shí)候默認(rèn)訪問404頁面操作

 更新時(shí)間:2020年08月31日 11:17:02   作者:front-gl  
這篇文章主要介紹了vue 項(xiàng)目中當(dāng)訪問路由不存在的時(shí)候默認(rèn)訪問404頁面操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

前言:

在Vue項(xiàng)目中,當(dāng)訪問的頁面路由不存在或錯(cuò)誤時(shí),頁面顯示為一片空白。然而,通常我們需要對(duì)訪問url不存在或者錯(cuò)誤的情況下添加默認(rèn)的404頁面,即not found頁面。

一般的處理方法是:

在最后添加一個(gè)path: * ,優(yōu)先級(jí)從上到下查找路由,都沒有的時(shí)候全部指向 404頁面 ,代碼如下:

const baseRoute = [
 { path: '/login', name: 'login', component: Login },
 {path: '/', redirect: '/index', component: Layout, name: 'dashboard'},
 // 404page
 { path: '/404', name: 'page404', component: page404 },
 {
 path: '/',
 redirect: '/index',
 component: Layout,
 children: [
 {
 path: 'index',
 name: 'index',
 component: ModeIndex,
 meta: {
  title: '', // 設(shè)備建模
  icon: ''
 }
 },
 {
 path: 'project',
 name: 'project',
 component: Project,
 meta: {
  dynamic: true, // 動(dòng)態(tài)面包屑標(biāo)題
  title: ''
 }
 }
 ]
 }
 {
 path: '*', // 頁面不存在的情況下會(huì)跳到404頁面
 redirect: '/404',
 name: 'notFound',
 hidden: true
 }
]
const router = new Router({
 routes: baseRoute
})

問題:

這樣做好處是簡(jiǎn)單,方便,但是因?yàn)槲掖a里面添加了如下代碼,用于頁面token失效跳出登錄的時(shí)候記住當(dāng)前路由,當(dāng)下次再登錄的時(shí)候直接跳到指定路由

if (to.path.slice(1) !== '') {
  router.push({
  path: '/login',
  query: {
  redirect: to.path.slice(1)
  }
  })
 } else {
 router.push({
  path: '/login'
 })
 }

就是因?yàn)榧恿怂姓也坏蕉贾赶?04,導(dǎo)致了第一次不知道網(wǎng)址的人輸錯(cuò)后,redirect就指向了404,這樣用戶第一次登錄成功后頁面就進(jìn)入404,體驗(yàn)很差,產(chǎn)品和測(cè)試也一直以為是頁面出bug了,為了解決這個(gè)問題,查找了相關(guān)資料,下面是優(yōu)化后的方法。

優(yōu)化后的設(shè)置方式: 

1、route --> index.js

末尾去掉 * --> 404

const baseRoute = [
 { path: '/login', name: 'login', component: Login },
 {path: '/', redirect: '/index', component: Layout, name: 'dashboard'},
  // 404page
 {path: '/404', component: page404, name: 'page404'}, 
 {
 path: '/',
 redirect: '/index',
 component: Layout,
 children: [
 {
 path: 'index',
 name: 'index',
 component: ModeIndex,
 meta: {
  title: '', // 設(shè)備建模
  icon: ''
 }
 },
 {
 path: 'project',
 name: 'project',
 component: Project,
 meta: {
  dynamic: true, // 動(dòng)態(tài)面包屑標(biāo)題
  title: ''
 }
 }
 ]
 },
 // {
 // path: '*', // 頁面不存在的情況下會(huì)跳到404頁面
 //redirect: '/404',
 //name: 'notFound',
 //hidden: true
 //}
]
const router = new Router({
 routes: baseRoute
})

2、在router.beforeEach 里面使用 to.matched 匹配出的路由個(gè)數(shù)來作為判斷條件,匹配不到路由就跳轉(zhuǎn)到404頁面,代碼如下

pemmision.js

代碼如下:

import router from './router'
import { getCookie } from './utils/auth'

// 通過beforeEach鉤子來判斷用戶是否登陸過 有無token
const whiteList = ['/login'] // 不重定向白名單
// const userInfo = getUserInfo()

router.beforeEach((to, from, next) => {
 console.log(to.matched)
 // 判斷是否有登錄過
 if (getCookie('userId_dev')) {
 // 如果包含userId_dev 從登錄頁面跳轉(zhuǎn) 直接跳轉(zhuǎn)到首頁 /
 if (to.path === '/login') {
 next()
 } else {
 if (to.matched.length === 0) {
 next('/404') // 判斷此跳轉(zhuǎn)路由的來源路由是否存在,存在的情況跳轉(zhuǎn)到來源路由,否則跳轉(zhuǎn)到404頁面
 }
 next() // 如果匹配到正確跳轉(zhuǎn)
 }
 // 沒有登錄
 } else {
 if (whiteList.indexOf(to.path) !== -1) {
 next()
 } else {
 // 還沒有登錄過 則跳轉(zhuǎn)到登錄界面
 // next('/login')
 if (to.path.slice(1) !== '') {
 if (to.matched.length === 0) {
  router.push({
  path: '/login'
  })
 } else {
  router.push({
  path: '/login',
  query: {
  redirect: to.path.slice(1)
  }
  })
 }
 } else {
 router.push({
  path: '/login'
 })
 }
 }
 }
})

這樣就解決了一開始輸錯(cuò)就跳到404的尷尬了!

補(bǔ)充知識(shí):Vue中用戶輸入無效地址,跳轉(zhuǎn)到錯(cuò)誤提示頁面

1. 在動(dòng)態(tài)路由中,有的路徑是無效路徑,可以讓無效的路勁跳轉(zhuǎn)到錯(cuò)誤提示頁面

組件的$router屬性的原型上有一些方法(this.$router)

(1)go方法

(2)replace:用新的路徑替換錯(cuò)誤路徑,同時(shí)創(chuàng)建錯(cuò)誤頁面的組件

a——b(不存在的路徑)——c(用c取代了b);所以路徑中就是a——c

(3)push:a——b(不存在的路徑)——c(在b后面添加了c);所以路徑就是a——b——c

以上這篇vue 項(xiàng)目中當(dāng)訪問路由不存在的時(shí)候默認(rèn)訪問404頁面操作就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • VUE使用 wx-open-launch-app 組件開發(fā)微信打開APP功能

    VUE使用 wx-open-launch-app 組件開發(fā)微信打開APP功能

    這篇文章主要介紹了VUE使用 wx-open-launch-app 組件開發(fā)微信打開APP功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Taro+vue3?實(shí)現(xiàn)電影切換列表功能

    Taro+vue3?實(shí)現(xiàn)電影切換列表功能

    我們做類似于貓眼電影的小程序或者H5?的時(shí)候?我們會(huì)做到那種?左右滑動(dòng)的電影列表,這種列表一般帶有電影場(chǎng)次,我這個(gè)項(xiàng)目是基于Taro?+vue3?+ts?來寫的用的組件庫也是京東的nut-ui以上的代碼和組件也有的是我二次封裝的組件,對(duì)vue3電影切換列表知識(shí),感興趣的朋友一起看看吧
    2024-01-01
  • vue 中自定義指令改變data中的值

    vue 中自定義指令改變data中的值

    這篇文章主要介紹了vue 中自定義指令改變data中的值,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-06-06
  • Vue.js下拉菜單組件使用方法詳解

    Vue.js下拉菜單組件使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Vue.js下拉菜單組件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • vue3修改link標(biāo)簽?zāi)J(rèn)icon無效問題詳解

    vue3修改link標(biāo)簽?zāi)J(rèn)icon無效問題詳解

    這篇文章主要介紹了vue3修改link標(biāo)簽?zāi)J(rèn)icon無效問題詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • vue修改proxyTable解決跨域請(qǐng)求,報(bào)404的問題及解決

    vue修改proxyTable解決跨域請(qǐng)求,報(bào)404的問題及解決

    這篇文章主要介紹了vue修改proxyTable解決跨域請(qǐng)求,報(bào)404的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Vue中用props給data賦初始值遇到的問題解決

    Vue中用props給data賦初始值遇到的問題解決

    這篇文章主要介紹了Vue中用props給data賦初始值遇到的問題解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • vue自定義keepalive組件的問題解析

    vue自定義keepalive組件的問題解析

    這篇文章主要介紹了vue自定義keepalive組件的相關(guān)資料,keep-alive組件是使用?include?exclude這兩個(gè)屬性傳入組件名稱來確認(rèn)哪些可以被緩存的,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-07-07
  • vue emit之Property or method “$$v“ is not defined的解決

    vue emit之Property or method “$$v“ i

    這篇文章主要介紹了vue emit之Property or method “$$v“ is not defined的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Mpvue中使用Vant Weapp組件庫的方法步驟

    Mpvue中使用Vant Weapp組件庫的方法步驟

    這篇文章主要介紹了Mpvue中使用Vant Weapp組件庫的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05

最新評(píng)論