前端单页面应用怎么做跳转拦截?试试“动态路由”
ins518 2024-09-30 21:19:14 技术文章 10 ℃ 0 评论
前言
以前我在做单页面应用时,由于静态页面资源都是打包扔在 nginx 上的,而 nginx 只作为流量接入层,也没法写业务逻辑,使之产品提出特定页面需要指定用户才能访问的功能时,基于“经验”限制,我只能举白旗。
后果就是,用户可以“自由”通过链接看到非预期的页面内容,虽然我们可以通过后端接口的数据限制,或者页面加载后的二次强跳转使“流程回归正常”,不过页面加载后的一次重新加载体验总不是很好。虽然试图通过 node 做个服务端渲染,但相比静态资源直接托管成本过大,还是放弃了。
有幸最近接触 jeecg,看到了 动态路由 那么种形式,结合现代前端框架,让单页面应用也能达到服务端过滤渲染的效果,还是涨了不少见识,下面逐步展开说明。
普通路由和路由懒加载
首先还是通过 vue 先讲下普通路由和路由懒加载两种方式。
普通路由
这是“最最最”基本的路由使用方式:
上述两种方式,也是我之前常用的。不过,对于复杂的项目,或者偏后台管理的应用,这些路由机制却显得有些薄弱。因为我们无法做到特定页面访问的限制,只要你知道地址都能跳转,甚至如果代码写的不够健壮,会被有些人“搞事”,毕竟都是静态资源,F12 都能看到。
我们知道 vue-router 有 beforeEach 做路由守卫 api,在它里面可以做路由的拦截,通常我们会在里面判断 token 或者一些业务标识,来做跳转限制。
我们可以通过用户 Logout 或者后端统一接口来清空目前授权路由数据,如果没有尽可能的让前端缓存下来,这样我们可能拿这些数据做更多的事情,比如:页面导航栏、菜单栏:
这样就能把 vue 中路由中几个核心的知识点给贯穿起来,jeecg 里这样的操作还是挺厉害的。有时候限制我们的不是代码怎么实现,而是脱离业务代码往程序设计上走,才能在某天也有这样的奇思妙想,不然还是需要读万卷书。
本文暂时没有评论,来添加一个吧(●'◡'●)