面试题:VueRouter中的 hash 模式和 history 模式有什么区别

面试题:VueRouter中的 hash 模式和 history 模式有什么区别

hash模式

  1. hash 模式的路由中带有 #
  2. hash 模式通过 window.onhashchange 方法监听路由的修改
  3. hash 模式在页面刷新的时候,发送的请求 url 是不带 # 后面的内容的
  4. hash 模式可以兼容部分低版本的浏览器
  5. hash 模式打包后,直接在浏览器中打开 /dist/index.html 可以正常的访问(原因是第 3 条指出的原因)

history模式

  1. history 模式是使用正常的 url 路径显示
  2. history 模式通过 pushStatereplaceState 方式修改路由改变
  3. history 模式在页面刷新的时候,会请求当前地址栏中完成的 url,这时需要服务器对这个 url 有处理,如果没有对应的文件,需要返回 index.html
  4. history 模式因为是使用的 HTML5 的新规范,所以不能兼容低版本的浏览器
  5. history 模式打包后,直接在浏览器中打开 /dist/index.html 会报错(原因是第 3 条指出的原因)

其他注意事向

  1. 有些 App 的分享是不支持 # 的,所以不能使用 hash 模式

总结

区别hash模式history模式
地址栏表现带着 #标准的 url 格式,不带 #
路由跳转的实现window.onhashchange 监听 hash 的改变pushState 或者 replaceState Api改变路由
页面刷新请求的地址中不携带 # 后面的内容,所以不需要后端的配合,也不会出现 404请求的是当前地址的完整路径,需要服务器做特殊处理,否则会出现 404
兼容性可以兼容一些低版本的浏览器不兼容低版本浏览器
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值