news 2026/2/10 8:10:07

前端路由设置

作者头像

张小明

前端开发工程师

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/2/2 16:43:01

【mm_struct 与 vm_area_struct 关系详解】

好的&#xff0c;这两个是 Linux 内核内存管理中最核心的数据结构。它们共同描述了进程的虚拟地址空间。 简单来说&#xff0c;它们的关系是 “总经理”和“部门经理” 的关系&#xff1a; mm_struct&#xff1a;像一个公司的 “总经理”&#xff0c;它掌管着整个进程的虚拟内存…

作者头像 李华
网站建设 2026/2/6 0:44:12

鸣潮120帧解锁新攻略:从困惑到流畅的完整指南

鸣潮120帧解锁新攻略&#xff1a;从困惑到流畅的完整指南 【免费下载链接】WaveTools &#x1f9f0;鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 你是否在鸣潮1.2版本更新后&#xff0c;发现原本丝滑的120帧游戏体验突然"消失"了&…

作者头像 李华
网站建设 2026/2/6 5:09:54

WaveTools鸣潮工具箱:5分钟学会120帧解锁与画质优化终极指南

WaveTools鸣潮工具箱&#xff1a;5分钟学会120帧解锁与画质优化终极指南 【免费下载链接】WaveTools &#x1f9f0;鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools WaveTools鸣潮工具箱是专门为《鸣潮》玩家打造的一款实用工具&#xff0c;能够轻松…

作者头像 李华
网站建设 2026/2/8 5:59:52

中山大学LaTeX论文模板全攻略:3分钟上手,告别格式烦恼

中山大学LaTeX论文模板全攻略&#xff1a;3分钟上手&#xff0c;告别格式烦恼 【免费下载链接】sysu-thesis 中山大学 LaTeX 论文项目模板 项目地址: https://gitcode.com/gh_mirrors/sy/sysu-thesis 还在为论文格式要求抓狂吗&#xff1f;封面信息填了又改&#xff0c;…

作者头像 李华
网站建设 2026/2/4 20:38:38

流-为序列化解释

流&#xff08;Stream&#xff09;是什么&#xff1f;流&#xff08;Stream&#xff09;是 Java 中用来处理输入和输出&#xff08;I/O&#xff09;操作的基本抽象&#xff0c;它可以用来读取和写入数据。流分为两种&#xff1a;字节流&#xff08;Byte Stream&#xff09;&…

作者头像 李华
网站建设 2026/2/4 20:19:28

鸣潮工具箱3大隐藏玩法揭秘:让你的游戏体验直线飙升!

鸣潮工具箱3大隐藏玩法揭秘&#xff1a;让你的游戏体验直线飙升&#xff01; 【免费下载链接】WaveTools &#x1f9f0;鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 你知道吗&#xff1f;大多数玩家只用了鸣潮工具箱不到30%的功能&#xff01;今…

作者头像 李华