vue路由中,history和hash的区别?

226 阅读1分钟

Vue中路由模式有两种:history 和 hash。

  1. Hash 模式

    Hash 模式,比较老的浏览器也支持,即把路径后面加一个 # 符号和一个字符串,这个字符串就是当前路由的路径。

    路由地址设为 hash 锚点值的形式,当井号 # 后面的路径发生变化时,浏览器并不会重新发起请求,而是会触发 hashchange 事件。

        http://localhost:8080/#/home
    

    优点:

    • 兼容性更好。可以兼容到 IE8。

    缺点:

    • URL 不够美观。
    • 效果相对简陋。
  2. History 模式

    History 模式充分发挥了 H5 API 的优势,即通过 history.pushState() 接口改变 URL,同时页面不刷新,界面效果更佳。

    路由地址不再以 # 开头,当 URL 发生改变时,页面不会重新加载。

        http://localhost:8080/home
    

    优点:

    • URL 显得更加简洁美观
    • 可以使用 H5 的 History API 管理浏览器的历史记录,提供更好的用户体验。

    缺点:

    • 兼容性差,无法兼容到 IE8 及其以下版本,若要支持 IE8 及其以下版本则必须使用 hash 模式
    • 刷新页面或直接访问 URL 时,服务器需要配置支持,否则会返回 404 错误。

总的来说,两者的实现方式不同,Hash 模式是通过改变 URL 中的 hash 来实现前端路由,History 模式是通过改变浏览器的 History Stack 中的条目来实现前端路由。在实际的开发中,应该根据实际需求来选择路由模式。