当前位置: 代码网 > it编程>数据库>Redis > hash和history路由的区别

hash和history路由的区别

2024年08月01日 Redis 我要评论
Hash 路由:更简单、兼容性好,适用于不需要 SEO 和简单的单页应用。History 路由:URL 更加美观、SEO 友好,但需要额外的服务器配置支持,适用于对 SEO 有要求、能控制服务器配置的项目。

提示:以下是本篇文章正文内容,下面案例可供参考

在前端路由中,hash路由和history路由是两种常见的实现方式。它们各有优缺点,适用于不同的场景。以下是它们的主要区别:

一、工作原理

1. 工作原理

hash 路由

  • 实现方式:依赖 url 中的 #(哈希)符号及其后面的部分。
  • 浏览器支持:所有现代浏览器都支持,因为这是 html 标准的一部分。
  • url 示例:http://example.com/#/home
  • 原理:当 url 的哈希部分发生变化时,浏览器不会重新加载页面,但会触发 hashchange 事件。前端框架可以监听这个事件并处理相应的路由逻辑。
  • 实现细节:
    • url 中的哈希符号(#)和其后的内容被称为“片段标识符”。
    • 浏览器在加载页面时,不会将 # 号及其后面的内容发送到服务器。因此,客户端可以通过监听 window.onhashchange 事件来处理路由变化。
  • 浏览器行为:
    • 当 url 的哈希部分变化时,浏览器不会重新加载页面,但会触发 hashchange 事件。
    • 例如,http://example.com/#/abouthttp://example.com/#/contact 不会刷新页面,但会触发相应的事件。

history 路由

  • 实现方式:依赖 html5 history api(pushstate、replacestate 和 popstate 事件)。
  • 浏览器支持:html5 兼容的现代浏览器。
  • url 示例:http://example.com/home
  • 原理:通过 pushstatereplacestate 方法来改变 url,而不触发页面刷新。通过 popstate 事件来监听浏览器导航(如后退或前进)。
  • 实现细节:
    • 利用 html5 的 history api,包括 pushstate、replacestate 和 popstate 事件。
    • 通过调用 history.pushstate(stateobj, title, url)history.replacestate(stateobj, title, url) 来改变 url,而不触发页面刷新。
  • 浏览器行为:
    • 调用 pushstatereplacestate 可以改变 url。
    • 浏览器前进后退按钮会触发 popstate 事件,使得应用可以响应历史记录变化。
    • 例如,从 http://example.com/homehttp://example.com/about,url 会改变但页面不会刷新。

2.url 表现

hash 路由

  • url 结构:
    • http://example.com/#/path使用 # 号后的部分作为路由路径。哈希符号后的部分是虚拟路径,实际上并未改变服务器请求路径。
    • 如果用户直接输入带有哈希的 url,页面仍然会加载正确的资源,因为哈希部分由前端处理。
  • seo(搜索引擎优化):传统搜索引擎通常忽略 # 后的部分,无法索引其中的内容,导致 seo 效果差。seo 不友好。
  • 用户体验:url 包含 # 符号,看起来不如标准路径简洁。

history 路由

  • url 结构:
    • http://example.com/path使用正常的路径结构,没有 # 号。
    • 更符合用户直觉和习惯。
  • seo:更友好,因为 url 是标准的路径格式,搜索引擎可以正常抓取和索引这些路径,提高 seo 效果。
  • 用户体验:url 更加简洁、美观,与传统的网页 url 形式一致,用户体验更好。

3.配置和兼容性

hash 路由

  • 服务器配置:无需特殊服务器配置,因为哈希部分不会被发送到服务器,服务器只需返回单一的 html 文件。
  • 兼容性:几乎所有浏览器都支持,包括一些较旧的浏览器。
    history 路由
  • 服务器配置:需要服务器配置支持,因为所有路由路径都需要映射到应用的入口文件(如 index.html)。否则,刷新页面时会导致 404 错误。
  • 兼容性:需要现代浏览器支持 html5 history api,但一些较旧的浏览器(如 ie9 及以下)不支持。

4.使用场景

hash 路由

  • 适用场景:
    • 需要支持旧版浏览器。
    • 不需要 seo 的后台管理系统、单页应用等。
    • 无法控制服务器配置的项目。

history 路由

  • 适用场景:
    • 需要 seo 支持的公开网站。
    • 用户体验要求高的项目。
    • 可以控制服务器配置,并确保正确处理所有路由请求。

5. 性能

  • 性能:两者在性能上的差异主要体现在初次加载和页面切换上。
  • hash 路由:由于不涉及服务器请求,页面切换速度快。
  • history 路由:初次加载时可能需要更多配置,但页面切换同样迅速。在 spa(单页应用)中,两者差异不明显。

总结

hash 路由:更简单、兼容性好,适用于不需要 seo 和简单的单页应用。
history 路由:url 更加美观、seo 友好,但需要额外的服务器配置支持,适用于对 seo 有要求、能控制服务器配置的项目。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com