服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

通过 React Router V6 源码,掌握前端路由

日期: 来源:全栈修仙之路收集编辑:DYBOY

在 React 前端项目中,涉及到前端路由,想必大家都用过了 react-router-dom[1] 这个包,因为常用,所以有必要弄清楚其中的实现细节,对前端路由会有一个更深入的认识,另外也有助于提升工作效率。

此文不赘述使用方法,相关内容可以参考tutorial 官方的指导手册[2]

客户端里的路由模式

相较于“服务端路由”每次从服务端获取 CSS、JS、HTML 资源,客户端路由即是在客户端内自行控制,与服务端解耦,页面数据异步获取,浏览器无刷新切换页面,能为用户提供更快的页面切换体验,同时也为前端 SPA 应用发展提供了基础。

在浏览器 Web 环境里有 “Hash” 和 “History” 两种客户端路由模式。

Hash 模式

Hash 模式点击会跳转定位到指定 DOM 位置,同时触发 hashchange 事件,支持在浏览器中操作前进后退,其本质还是在同一文档中操作,Server 端无感知前端路由变化。

Hash 值在 window.location.hash 中存储,因此 Hash 变化时,同时可看到浏览器的 window.location.pathname 不变。

History 模式

Window 对象中提供了 history 实例,同时可以通过 history 暴露的 API 操作路由历史堆栈。

也就是说,我们可以通过控制 history 对象来控制页面的路由跳转,浏览器不会刷新,但浏览器里的 URL 会变更,SEO 更友好。

History 的 API 具体用法可参阅:History API - MDN[3]

React Router v6 的架构设计

react-router-dom 是一个封装浏览器客户端路由方案的优质工具模块,基于 React 的应用开发者,可借助其快速开发实现“客户端路由”,同时提升用户体验。

react-router-dom 作为一款优秀的前端模块,更新到了 V6 版本,全面拥抱 React hooks 功能设计,通过阅读其源码,了解其设计思想,相信可以给大家在 路由设计Hooks 实践上带来一些收获。

文件结构

在项目管理上采用了基于 Yarn 的 Monorepo 方案:

项目设计

react-router-dom 是浏览器环境中的桥接层,react-router-native 则是 Hybrid 开发的桥接层,其核心实现都在 react-router 模块中,层层递进。

此外,react-router-dom-v5-compat 是用于 react-router-dom v5 版本兼容迁移到 v6 版本的处理方案,但个人更建议是直接使用/切换到 v6 版本,直接冲

相关阅读

  • 用 Node.js 手写 WebSocket 协议

  • 我们知道,http 是一问一答的模式,客户端向服务器发送 http 请求,服务器返回 http 响应。这种模式对资源、数据的加载足够用,但是需要数据推送的场景就不合适了。有同学说,http2
  • 原生 CSS Custom Highlight 终于来了~

  • 介绍一个比较前沿但是非常有用的新特性:一个浏览器原生支持的 CSS 文本高亮功能,官方名称叫做 CSS Custom Highlight API[1],有了它,可以在不改变 dom 结构的情况下自定义任意文
  • 前端框架的未来:useSignal()

  • Signal(信号)是一种存储应用状态的形式,类似于 React 中的 useState()。但是,有一些关键性差异使 Signal 更具优势。Vue、Preact、Solid 和 Qwik 等流行 JavaScript 框架都支持
  • 2023年你应该关注的JavaScript趋势

  • 本文翻译者系360 奇舞团前端开发工程师原文标题:Top JavaScript (JS) Trends You Should Follow in 2023原文作者:yevheniia原文地址:https://www.codica.com/blog/top-javascr
  • 2022年10个关于Javascript的统计数据

  • 本文翻译者系360 奇舞团前端开发工程师原文标题:Top 10 JavaScript Usage Statistics to Watch Out for in 2022原文作者:Nihar Raval原文地址:https://radixweb.com/blog/top-
  • 浅谈前端组件设计

  • 为何要进行前端组件设计? 与仅承担数据处理逻辑的后端不同,前端需要负责界面渲染、数据处理、和接口调用,在框架诞生前,更多地是编写页面维度的顺序脚本代码。随着前端继续的持

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 通过 React Router V6 源码,掌握前端路由

  • 在 React 前端项目中,涉及到前端路由,想必大家都用过了 react-router-dom[1] 这个包,因为常用,所以有必要弄清楚其中的实现细节,对前端路由会有一个更深入的认识,另外也有助于提升
  • 放心喝:谭梅大师制作的梅香熟普面世

  • 庚子年岁末,孙立平老师一行在云南旅行途中,拜会了熟茶发酵大师、被称为熟茶之母的谭梅女士。在品饮交谈中,他们注意到一款谭梅老师所在团队出口欧洲并在欧洲广受欢迎的熟茶。于
  • 孙立平:也许我们应当接受一个现实了

  • 面对经济的疲弱,我们经常见到这样的思维脉络:为什么经济疲弱?答:外贸订单大幅减少;外贸订单减少怎么办?答:依靠内需;内需也疲软怎么办?答:采取措施拉动;如果拉不动怎么办?答:加大投资力度
  • 讨论:独生子女父母的养老问题由政府负责解决

  • 做这个讨论,是缘于一位网友的私信:近来有这个消息,全国政协委员、广东国鼎律师事务所主任朱列玉针对我国独生子女父母的养老问题早早就给出了提议。他认为:独生子女父母的养老问
  • 随心与梅香:两款独家高品质基准口粮茶

  • 在挖茶俱乐部成立之初,孙立平教授就对我们提出一个要求:在年轻人中推广饮茶这一健康的生活习惯。在俱乐部建立之后这不到两年的时间里,我们一直在为这个目标而努力:寻找或制作有
  • 孙立平:消费新特征:在三大件及房子汽车之后

  • 在前几天的《也许我们应当接受一个现实了》一文中,我说了如下的一段话:所以我们现在应当正视和承认一个现实:形成一个如同过去几十年那样的旺盛内需没有可能了。内需不是你想拉