news 2026/6/15 15:06:01

前端路由设置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前端路由设置

构建一个健壮的前端路由系统,不仅仅是把页面配置进去,更要考虑层级结构、权限控制、用户体验(重定向)以及异常兜底(404)。

一、路由分类(层级结构)

1. 第一层(顶层)

  • 区分“无需登录页面”(如登录页)和“需登录业务页”(如后台主界面)
  • 示例配置:
    {path:"/login",component:"LoginPage"},

2. 第二层(业务层)

  • 加载全局 Layout(侧边栏、Header),并进行权限校验
  • 示例配置:
    {path:"/",component:"@/widgets/MainLayout",routes:[{path:"/",redirect:"/dashboard"},{path:"/dashboard",component:"DashboardPage",wrappers:["@/wrappers/auth"],},// 其他业务页面...]}
  • 路由守卫(auth Wrapper)实现:
    import{Navigate,Outlet,useLocation}from"umi";import{isUserLoggedIn}from"@/shared/utils/auth";/** * 路由守卫(第一道防线) * 拦截没有 Token 的用户,并重定向到登录页,传递 reason=no_auth */exportdefault()=>{constlocation=useLocation();constisLogin=isUserLoggedIn();if(isLogin){return<Outlet/>;}else{// 构造目标 URL// 1. redirect: 登录成功后要跳回的地方// 2. reason=no_auth: 告诉登录页,这是因为没登录被拦截过来的constcurrentPath=encodeURIComponent(location.pathname+location.search);consttargetUrl=`/login?redirect=${currentPath}&reason=no_auth`;return<Navigate to={targetUrl}replace/>;}};

3. 第三层(功能层)

  • 具体的业务页面、重定向规则、内部 404
  • 示例配置:
    {path:"*",component:"404"},

二、路由书写顺序

  • 路由匹配是“从上到下”的 (Order Matters),路由器会像 switch 语句一样,从第一行开始找
  • 错误做法:把 path: ‘/’ 放在 path: ‘/login’ 前面,且没有加 exact
  • 后果:所有页面都会匹配到 /,导致登录页可能渲染不出来或者被 Layout 包裹

三、权限校验

  • 使用 Umi Wrappers (高阶组件)
  • 配置方式:在路由配置中添加wrappers: ['@/wrappers/auth']
  • 执行逻辑:路由匹配到该层级时,先执行 Wrapper。如果 Wrapper 判断未登录,直接跳转,主 Layout 连加载的机会都没有,彻底杜绝空白或闪屏。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/11 9:01:39

JVM垃圾回收那些事

垃圾回收那些事&#xff09;垃圾回收的算法标记清除算法流程优点&#xff1a;实现简单缺点&#xff1a;标记复制算法流程优点缺点标记整理算法&#xff08;标记压缩算法&#xff09;优点缺点分代GC算法内存划分为什么要分为 Young 区和老年代垃圾回收的算法 常见的是下面这四种…

作者头像 李华
网站建设 2026/6/12 18:59:22

树莓派执行sudo apt update出错:手把手教程(从零实现)

树莓派sudo apt update出错&#xff1f;别慌&#xff0c;一文彻底解决&#xff08;实战全记录&#xff09;你有没有遇到过这种情况&#xff1a;刚插上电、连上网的树莓派&#xff0c;满怀期待地敲下一行sudo apt update&#xff0c;结果终端却报出一堆红字错误——连接超时、40…

作者头像 李华
网站建设 2026/6/13 4:24:43

Nintendo Switch全能文件管家:NSC_BUILDER从入门到精通

Nintendo Switch全能文件管家&#xff1a;NSC_BUILDER从入门到精通 【免费下载链接】NSC_BUILDER Nintendo Switch Cleaner and Builder. A batchfile, python and html script based in hacbuild and Nuts python libraries. Designed initially to erase titlerights encrypt…

作者头像 李华
网站建设 2026/6/14 22:47:19

序列化与反序列化-流

Java 中的序列化与反序列化 序列化&#xff08;Serialization&#xff09;和反序列化&#xff08;Deserialization&#xff09;是 Java 中非常重要的概念&#xff0c;它们主要用于将对象转换成可以存储或传输的格式&#xff0c;或者将这种格式转换回原来的对象。 1. 什么是序…

作者头像 李华
网站建设 2026/6/15 14:13:55

如何快速掌握AEUX插件:设计师的终极效率提升指南

如何快速掌握AEUX插件&#xff1a;设计师的终极效率提升指南 【免费下载链接】AEUX Editable After Effects layers from Sketch artboards 项目地址: https://gitcode.com/gh_mirrors/ae/AEUX 你是否曾经在Figma中精心设计完界面后&#xff0c;却在After Effects中重新…

作者头像 李华
网站建设 2026/6/14 21:02:31

springboot基于vue Web的美容美发理发店管理系统的设计与实现_qqc2rcv4

目录已开发项目效果实现截图开发技术介绍核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;已开发项目效果…

作者头像 李华