2种方式解决vue路由跳转未匹配相应路由避免出现空白页面或者指定404页面

https://www.cnblogs.com/goloving/p/9254084.html

https://www.cnblogs.com/goloving/p/9254084.html

1、路由全局守卫

  在做项目的时候,遇到需要做路由跳转,但当用户输入错误url地址,或是其它非法url路由地址,我们或许会想到跳转至404页面。不管你有没有写一个404页面,当出现未匹配路由都需重新指定页面跳转。可能大家首先想到会是路由重定向,redirect来解决这个问题。但实际上通过redirect是没办法更好解决这个问题的。看代码红色部分

复制代码
router.beforeEach((to, from, next) => {
  if (to.matched.length ===0) {  //如果未匹配到路由
    from.name ? next({ name:from.name }) : next(‘/‘);   //如果上级也未匹配到路由则跳转登录页面,如果上级能匹配到则转上级路由
  } else {
    next();    //如果匹配到正确跳转
  }
});
复制代码
2、重定向

  有时,我们可能会输入错的 url, 或者不再存在等各种原因导致其不再能被访问,那么我们就可以对于这种情况进行重定向。 很简单,只要在路由中添加下面的代码就可以了:

复制代码
//创建路由对象并配置路由规则
let router = new VueRouter({
    routes:[
       {path:‘/‘,redirect:{name:"home"}},  // 重定向到主页
       {name:‘home‘,path:‘/home‘,component:Home},
       {path:‘/music‘,component:Music},
       {path:‘/movie‘,component:Movie},
       {name:‘img‘,path:‘/picture22‘,component:Picture},
       {name:‘musicDetail‘,path:‘/musicDetail/:id/:name‘,component:MusicDetail},
       {path:‘*‘,component:NotFound},//全不匹配的情况下,返回404,路由按顺序从上到下,依次匹配。最后一个*能匹配全部,
    ]
});
复制代码
  或者下面这样,注意放到最后

{
      path: "*",
      redirect: "/"
}
  即对于所有的(*代表所有)错误页面,我们都可以重定向到 "/" 中。

  

原文地址:https://www.cnblogs.com/qianjin888/p/10623129.html

时间: 2024-08-17 20:22:52

2种方式解决vue路由跳转未匹配相应路由避免出现空白页面或者指定404页面的相关文章

三种方式解决你的js加载乱码

第一种方式——编码统一 我们以前觉得出现乱码的原因是因为编码不统一,就是因为我们设置编码统一之后,就解决了问题,所以,让html和js的编码统一,是最简单的一个乱码解决方式,原因是什么,是因为,如果你在加载js的时候,并没有声明js的编码格式,那么浏览器会默认的按照当前html的编码格式进行解析引入的js文件,如果你的js和本身页面编码不一样,并且js中引入了中文字符,那么肯定会出现乱码的.要知道,程序都是笨笨的. 第二种方式——在引入js的标签中加入charset属性 这样引入,那么这个xx.

2种方式解决nginx负载下的Web API站点里swagger无法使用

Web API接口站点,引入了swagger来实时生成在线的api文档,也便于api接口的在线测试.swagger:The World's Most Popular Framework for APIs. 本地测试没有问题. 发布到生产,问题出现了.——线上部署的站点是用nginx做的3个节点的负载.nginx配置了公开的域名,并且与3个节点iis上的站点做了映射.3个单节点的端口不是默认的80,由此问题产生了:当访问swagger时,swagger自动获取的文档的url包含了这个端口,因为站点

两种方式解决 生产者消费者问题

一.通过wait().notify()线程通信来实现 输出结果: 二.通过阻塞队列来解决生产者消费者问题 输出结果: 由输出结果可以看出:"最后阻塞队列中还剩下4个鸡蛋"明显是正确的,可知阻塞队列内部意见实现了同步,不需要我们额外同步,是线程安全的.

Vue ---- 组件文件分析 组件生命周期钩子 路由 跳转 传参

目录 Vue组件文件微微细剖 Vue组件生命周期钩子 Vue路由 1.touter下的index.js 2.路由重定向 3.路由传参数 补充:全局样式导入 路由跳转 1. router-view标签 2. router-link标签 3.逻辑跳转 this.$router 控制路由跳转 this.$route 控制路由数据 Vue组件文件微微细剖 组件在view 文件中创建 如果需要用到其他小组件可以 在 component文件中创建并导入 view文件下: <template> <di

安卓Activity跳转的几种方式

本文转载于http://blog.sina.com.cn/s/blog_5140274d0100q4j7.html,本人仅作为学习交流之用,请大家尊重原创. 第一种方式,用action来跳转. 1.使用Action跳转,如果有一个程序的 AndroidManifest.xml中的某一个Activity的IntentFilter段中定义了包含了相同的Action那么这个Intent 就与这个目标Action匹配.如果这个IntentFilter段中没有定义 Type,Category,那么这个 A

转载:删除github上文件夹的两种方式

http://www.jianshu.com/p/286be61bb9b8 删除github上文件夹的两种方式(解决已经加入ignore的文件夹无法从远程仓库删除的问题) 如果此文件夹已被加入git追踪,那么删除方法很简单,只需要将此文件夹删掉,然后提交一下就可以了如果次文件夹曾经被加入过git追踪,现在被加入.gitignore里了,但是github上还有此文件夹.对于这种情况,稍微有点复杂,因为已经加入.gitignore的文件或文件夹,无法对其进行提交了,哪怕是将其删除,都无法提交.我们用

vue.js路由vue-router(一)——简单路由基础

前言 vue.js除了拥有组件开发体系之外,还有自己的路由vue-router.在没有使用路由之前,我们页面的跳转要么是后台进行管控,要么是用a标签写链接.使用vue-router后,我们可以自己定义组件路由之间的跳转,还可以设置稍复杂的嵌套路由,创建真正的spa(单页面应用).我之前用vue-cli脚手架写了一个简单的人员管理实例,现在我们不用脚手架,就用原生的vue来写,本文也主要是通过实例来讲解vue.js+vue-router相关知识. 简单路由跳转实例 1.起步 下载vue-route

002-UIImageView和UIButton对比 UIImageView的帧动画 格式符补充 加载图片两种方式 添加删除SUBVIEW

一>.UIImageView和UIButton对比 显示图片 1> UIImageView只是一种图片(图片默认会填充整个UIImageView)  image\setImage: 2> UIButton能显示2种图片 * 背景 (背景会填充整个UIButton)  setBackgroundImage:forState: * 前置(覆盖在背景上面的图片,按照之前的尺寸显示)  setImage:forState: * 还能显示文字 点击事件 1> UIImageView默认是不能

详解vue 路由跳转四种方式 (带参数)

详解vue 路由跳转四种方式 (带参数):https://www.jb51.net/article/160401.htm 1.  router-link ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1. 不带参数  <router-link :to="{name:'home'}"> <router-link :to="{path:'/home'}"> //name,path都行, 建议用name /