Spring Boot+Vue前后端分离,如何避免前端页面 404,2024年最新Web前端体系化进阶学习图谱
这里会监控到所有的页面路由/跳转,主要逻辑是这样:
-
如果要去的地址是 ‘/’,即要去的地方是登录页面,则直接执行 next 方法表示放行。
-
如果要去的地址不是 ‘/’,那就要看用户是否登录了,如果已经登录了,则先初始化菜单,然后调用 next 方法继续向下走,想去哪去哪。
-
如果没有登录,则调用 next 方法,跳转路径是 ‘/’,即回到登录页面,同时携带上一个 redirect 参数,这个是重定向的地址,这个参数的作用是这样:例如我本来输入 ‘/aa/bb’,结果因为没有登录,自动跳转到项目登录页面,当我登录成功后,自动跳回 ‘/aa/bb’。
有这个配置之后,就不怕用户乱跳转了,如果没有登录随意输入一个地址,就会回到登录页面。
上面的配置还存在一个 404 问题。
在用户还没有登录的时候,如果他在浏览器输入一个不存在的地址,就会自动回到登录页面,这没有问题,但是用户如果已经登录了,在浏览器输入一个不存在的地址,这个时候就会发生 404,当你没做任何定义的时候,所谓的 404 页面其实就是一片空白。
要解决这个问题,很多小伙伴第一个思路就是能不能在前置路由导航守卫里边做一个判断,当你要跳转的时候,先去判断一个跳转的路径是否存在,如果存在再去跳转,否则就不去跳转。
3.1 动态路由
这个思路看起来没问题,但实际上还有更简便的办法,那就是使用 vue-router 中的动态路由。
举一个简单的例子,我们有一个用户展示的页面,这个页面会根据不同的用户 id 来展示不同的用户数据,所以我们在 router.js 中可以按如下方式来定义路由:
routes: [
// 动态路径参数 以冒号开头
{ path: ‘/user/:id’, component: User }
]
注意这里标记的参数 id 前面有一个 :
。定义完成后,以后像 /user/1
、/user/2
都会映射到相同的路由。而像地中的 1 、2 等参数,我们则可以通过 this.$route.params.id
获取。
上面这种是设置一个参数,我们也可以设置多个参数,我们可以参考官方给出的一个表格:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9CBWcZv3-1584424148156)(http://img.itboyhub.com/2020/03/vue-router-1.png)]
如果有多个参数,也可以通过 this.$route.params
来获取参数的值。
注意,在动态路由匹配时,如果我们从 /user/1
切换到 /user/2
,原有的 User 组件是不会销毁的,这也意味着组件的生命周期钩子函数不会再被调用,那么要怎么刷新数据呢?这个时候我们可以采用 beforeRouteUpdate 导航守卫,在导航守卫中完成数据更新:
router.beforeRouteUpdate((to, from, next) => {
//刷新数据
})
3.2 解决 404
最后,就是我们本文要说的 404 问题了。看懂了前面,如何解决 404 其实就很容易明白了。
我们可以使用通配符 *
来匹配任意路径,例如下面这段匹配格式:
{
// 会匹配所有路径
path: ‘*’
}
这个匹配规则会匹配到所有路径,通常就是用来解决前端页面的 404 问题。也可以自己定义一些前缀,例如下面这样:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
最后前端到底应该怎么学才好?
如果你打算靠自己摸索自学,那么你首先要了解学习前端的基本大纲,这是你将要学习的主要内容,理解以及掌握好这些内容,便可以找到一份初级的前端开发工作。你还需要有一套完整的前端学习教程,作为初学者最好的方式就是看视频教程学习,初学者容易理解接受。
不要选择买书学习,这样的方式没有几个人能学会,基本都是看不下去书,也看不懂书。如果喜欢看书的学弟,可以买一些经典的书籍作为辅助即可,主要还是以看教程为主。每天抽出固定几个小时学习,做好长期学习的准备。学习编程并不是每天光看视频,你学习编程最重要的目的是为了编写软件产品,提供给大众使用,所以用手写出代码实现功能才是我们要做的事情。
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
FFF,t_70#pic_center)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-X3wdUkwb-1712761533241)]
更多推荐
所有评论(0)