您好,欢迎访问一九零五行业门户网

怎样对Vue应用全局配置404页面

这次给大家带来怎样对vue应用全局配置404页面,对vue应用全局配置404页面的注意事项有哪些,下面就是实战案例,一起来看一下。
前后端分离后,控制路由跳转的责任转移到了前端,后端只负责给前端返回一个html文档以及提供各种接口。下面我们用作例子的两个项目,均采用vue作为基础框架,一个是spa应用,另一个是多页应用,均由前端进行路由控制及渲染的。
总体思路
无论单页还是多页,我的实现思路是总体配置404页面的思路就是在前端路由表中添加一个 path: '/404' 的路由,渲染相应的404页面。同时,配置一个规则,当在用户可访问的路由表中的所有路由都无法匹配的时候,自动跳转重定向至该404页面。下面来说一下针对单页和多页,我不同的实现方式。
spa的404路由配置
单页应用配置404页面,也区分两种情况:
路由表固定的情况
如果spa的路由表是固定的,那么配置404页面就变得非常的简单。只需要在路由表中添加一个路径为 404 的路由,同时 在路由表的最底部 配置一个路径为 * 的路由,重定向至404路由即可。
(由于路由表是由上至下匹配的,一定要将任意匹配规则至于最底部,否则至于此路由规则下的路由将全部跳转至404,无法正确匹配。)
// router.js export default new router({  mode: 'history',  routes: [  // ...  {  name: '404',  path: '/404',  component: () => import('@/views/notfound.vue')  },  {  path: '*', // 此处需特别注意至于最底部  redirect: '/404'  }  ], })
路由表动态生成的情况
路由表是动态生成的情况下,也就是说路由表分为两部分,一部分为基础路由表,另一部分是需要根据用户的权限信息动态生成的路由表。
本项目中动态生成路由采用vue-router自带的addroutes方法,该方法是会将新的路由规则在原路由表数组的尾部注入的。由于任意匹配重定向至404页面的规则必须至于路由表的最底部,所以此处我将重定向至404页面的规则抽出,在动态路由注入后,再注入重定向规则,以确保该规则至于路由表最底部。
// router.js export default new router({  mode: 'history',  routes: [  // ...  {  name: '404',  path: '/404',  component: () => import('@/views/notfound.vue')  },  // ...other codes  ], }) // notfoundroutermap.js export default [  {  name: '404',  path: '/404',  component: () => import('@/views/notfound.vue')  },  },  {  path: '*',  redirect: '/404'  } ] // main.js //...other codes router.beforeeach((to, from, next) => {  new promise((resolve, reject) => {  if (getcookie(tokenname)) {  if (!getinfo()) {  promise.all([store.dispatch('getbasicinfo'), store.dispatch('getuserdetail')]).then(res => {  store.dispatch('generateroutes', { roles }).then(() => {   // 根据用户权限生成可访问的路由表  router.addroutes(store.getters.addrouters) // 动态添加可访问路由表  router.addroutes(notfoundroutermap) // 添加404及重定向路由规则  resolve({ ...to, replace: true }) // 重新加载一次路由,让路由表更新成功后走下面else的判断  })    })  } else {  // ...other codes  }  } else {  window.location.href = '/login.html'  }  }).then(res => {  if (res) {  next(res)  } else {  next()  }  }).catch(err => {  new error(err)  next(false)  })
多页应用的404路由配置
多页应用区别于spa的不同点是每个页面有自己的一套路由,并且每个页面可能有自己的一套404页面风格,当然也可能没有。这时候,就不能再采用动态添加路由规则的方法了。
我采用的方案是在全局导航守卫beforeeach中对路由匹配的情况进行判断,这时候就需要用到vue导航守卫中的 matched 数组了。如果没有一个匹配上的,那么就重定向至404页面。当然,这个404页面也单独设置为一个页面。
// permission.js //...other codes router.beforeeach((to, from, next) => {  new promise((resolve, reject) => {  // ...other codes  }).then(res => {  if (!to.matched.length) {  window.location = '/error.html#/404'  return  }   if (res) {  next(res)  } else {  next()  }  }).catch(err => {  new error(err)  next(false)  })
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
怎样用mpvue构建小程序
怎样进行mpvue小程序项目搭建
以上就是怎样对vue应用全局配置404页面的详细内容。
其它类似信息

推荐信息