history和hash两种路由方式的最大区别是什么?

history 路由和 hash 路由最大的区别在于它们如何改变 URL 以及如何与浏览器交互:

  • hash 路由(也叫哈希路由):使用 URL 中的哈希符号 # 来区分不同的路由。例如 https://www.example.com/#/about。哈希值后面的部分不会被发送到服务器,而是由浏览器自身处理。当哈希值改变时,浏览器不会重新加载页面,而是会触发 hashchange 事件,JavaScript 可以监听这个事件并更新页面内容。

  • history 路由(也叫 HTML5 History API 路由):利用 HTML5 History API 提供的 pushState()replaceState() 方法来修改 URL,而不会导致页面重新加载。例如 https://www.example.com/abouthistory 路由需要服务器端的配合,因为当用户直接访问 https://www.example.com/about 时,服务器需要返回正确的 HTML 页面。如果服务器配置不正确,可能会返回 404 错误。

总结一下主要区别:

特性 hash 路由 history 路由
URL 包含 # 符号,例如 /#/about 看起来像普通的 URL,例如 /about
服务器交互 哈希值后的部分不会发送到服务器 需要服务器端正确配置才能正常工作
页面刷新 改变哈希值不会刷新页面 改变 URL 不会刷新页面
SEO 对 SEO 不友好,搜索引擎通常会忽略哈希值后的内容 对 SEO 友好
用户体验 URL 不美观 URL 更美观,更符合用户习惯
兼容性 兼容性好,支持旧版浏览器 兼容性略差,不支持非常老旧的浏览器

因此,选择哪种路由方式取决于项目需求:

  • 优先使用 history 路由: 因为它对 SEO 友好,URL 更美观,用户体验更好。但是需要服务器端的配合。

  • 如果服务器无法配置或者需要兼容非常老旧的浏览器,则使用 hash 路由: 虽然 URL 不美观,但可以保证兼容性和功能的正常运行。

总而言之,最大的区别在于URL的处理方式以及是否需要服务器配合。 history 路由更现代化,对用户和SEO更友好,但需要服务器支持;hash 路由更传统,兼容性更好,但URL不够美观。

posted @   王铁柱6  阅读(72)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示