路由演变简史:从 Hash 到 History,再到如今的 Hybrid
2024-01-02 05:00:05
叩问前世:Hash 模式的由来
Hash 模式,前端路由演变史中的第一个关键节点。其思想源于一个基础的 Web 技术——锚点链接。
锚点链接,即以 "#" 字符串开始的 URL,允许网页在不刷新整个页⾯的的基础上,跳到⽂档中的特定部分。受此启发,Hash 模式应运而生,它将 URL 中的 "#" 及其后的内容视为路由信息,用于匹配不同的路由规则并渲染对应组件。
承前启后:History 模式的登场
Hash 模式的问世解决了传统刷新页⾯的粗暴⽅式,但也带来了一个问题:URL 中的 "#" 部分不属于浏览器⻚⾯的⼀部分,导致⻚⾯在被收藏、复制或粘贴时,会丢失路由信息。
为补足 Hash 模式的缺憾,History 模式闪亮登场。它不再使⽤ "#" 符号,而是直接使⽤浏览 history 栈来进⾏路由管理。浏览器 history 栈存储了页⾯加载的 记录,使 history 模式能悄无声息地进⾏路由切换,⽽不影 响 URL 的外在表现形式,解决了 Hash 模式的痛点。
兼容共赢:Hybrid 路由的兴起
然而,History 模式也并非万能。在服务端渲染场景下,它便会原形毕露。
服务端渲染下,服务器⼀次性地将整页⾯内容渲染成 HTM 发送给浏览器,浏览器再⾏解析渲染。此时,服务器渲染出的⻚⾯是不包含路由信息的,导致 history 模式下的路由失效。
为弥补 History 模式的缺陷,Hybrid 路由应运而生。它结合了 Hash 模式和 History 模式的优势,在客户端使⽤ History 模式进⾏路由管理,在服务端渲染场景下切换到 Hash 模式,巧妙地解决了在服务端渲染场景下的路由问题。
展望未来:路由技术的无限可能
随着 Web 技术的不断演进,前端路由也必然⾯临着更多的挑战和机遇。
⼀种值得期待的趋势是,路由将与服务⼯⼈(Service Worker)结合得更加紧密。服务⼯⼈具有拦截和处理⽹络请 Connexion 的能⼒,可与路由形成深度の结合, 进⼀步提⾼路由的灵活性与效率。
此外,随着⾮同⻅的前端应⽤场景不断涌现,如渐进式应⽤(PWA)和离线应⽤,对路由的需也有着更⾼的要求。对此,社区也 积极进⾏着探索与创新,为路由技术的未来指明了⽅向。
溯源致远,展望未来
路由,作 为前端开发者⼯ 具带中必 不可缺少的⼀部分,其演变史 折射了 Web 技术的不断更迭与创新。从 Hash 模式到 History 模式,再到如今流行的 Hybrid 路由方案,每⼀次变革都为前端开发带来了全新的可能。
站在巨⼈的肩上,我们⽆需再从零开始,可以利⽤现有 的成⼲库和⼯具来简化路由的应⽤。⽆论是 React 的 hooks
、Vue 的 router
API 还是前端⻚⾯路由库,如 history
、express
, 都 为我们提供了开箱即⽤的路由管理方案,帮助我们更⾼效、更容 易地打造前沿的 Web 应⽤。