哈希模式利用URL中#后的部分实现路由,不触发页面重载,兼容性好且无需服务器配置,适合静态站点;2. 历史模式通过HTML5 History API实现更美观的URL,需服务端支持以避免404,适合对SEO和用户体验要求高的项目。

在单页应用(SPA)中,路由管理是实现页面跳转和状态维护的核心机制。JavaScript 提供了两种主流的前端路由模式:哈希模式(Hash Mode)和历史模式(History Mode)。它们各有特点,适用于不同场景。
哈希模式:基于 URL 的片段标识
哈希模式利用 URL 中 # 后面的部分(即 hash 值)来控制路由变化,不会触发页面重新加载。
- URL 示例:
https://example.com/#/home,其中/home是哈希路径 - hash 改变时,浏览器不会向服务器发送请求
- 通过监听
window.onhashchange事件来响应路由变化 - 兼容性好,支持所有现代浏览器甚至老旧版本
优点是配置简单,无需服务器配合,适合静态站点或部署环境受限的项目。
历史模式:利用 HTML5 History API
历史模式使用 pushState 和 replaceState 方法操作浏览器历史记录,实现无刷新跳转。
立即学习“Java免费学习笔记(深入)”;
- URL 示例:
https://example.com/home,看起来像传统多页网站 - 可创建更“干净”的 URL,提升用户体验和 SEO 友好性
- 需要后端配合:所有客户端路由应 fallback 到 index.html,避免 404 错误
- 依赖 HTML5 History API,不支持 IE9 及以下版本
适合对 URL 美观度有要求、且能控制服务器配置的项目,如企业级 Web 应用。
如何选择合适的模式?
选择依据主要看部署环境和功能需求:
- 若部署在静态服务器或无法修改服务端路由,优先使用哈希模式
- 若追求美观 URL 并具备服务端控制权,推荐历史模式
- SEO 敏感项目建议用历史模式 + 服务端渲染(SSR)增强索引能力
- 开发阶段可用历史模式,上线前根据实际环境调整
基本上就这些。两种模式都能有效管理前端路由,关键在于匹配项目实际条件。理解它们的运行原理,才能做出合理决策。











