返回

Vue 路由中的 Hash 和 History 对决

前端


在 Vue 生态中,路由是一个不可或缺的工具,它为单页面应用提供了路径管理和组件映射功能。关于 Vue 路由,我们经常会遇到两个名字:Hash 和 History,它们都是 Vue 路由中常用的模式,但二者之间存在着一些差异。本文将带你一探究竟,详细解读 Hash 和 History 的区别,助你做出明智的选择。




Hash 模式:

Hash 模式利用了浏览器的地址栏,在 URL 中使用井号 # 来区分不同的路由。当路由发生变化时,它只会修改地址栏中的 hash 部分,不会重新加载页面。Hash 模式的主要优势在于,它无需服务器端的配置,可以在任何环境下使用。

History 模式:

History 模式使用浏览器的历史记录 API,在 URL 中使用路径来区分不同的路由。当路由发生变化时,它会触发浏览器的历史记录,重新加载页面。History 模式的主要优势在于,它提供了更友好的用户体验,并且能够更好地利用浏览器的前进和后退按钮。



特征 Hash 模式 History 模式
工作原理 利用浏览器地址栏的 hash 部分 使用浏览器的历史记录 API
重新加载页面 不需要 需要
需要服务器端配置 不需要 需要
兼容性 更广泛 较低
SEO 友好性 不友好 友好
前进后退按钮 无法使用 可以使用


Hash 模式适用场景:

  • 需要快速搭建一个单页面应用,无需考虑 SEO 和兼容性。
  • 项目需要部署在不支持 History 模式的服务器上。
  • 项目需要兼容较旧的浏览器。

History 模式适用场景:

  • 需要提供更好的用户体验,并且希望利用浏览器的前进和后退按钮。
  • 项目需要部署在支持 History 模式的服务器上。
  • 项目不需要兼容较旧的浏览器。


Hash 模式和 History 模式各有优缺点,具体选择哪一种模式,需要根据项目的实际情况来决定。如果需要快速搭建一个单页面应用,或者需要兼容较旧的浏览器,那么可以选择 Hash 模式。如果需要提供更好的用户体验,并且希望利用浏览器的前进和后退按钮,那么可以选择 History 模式。