Vue-Router中hash模式和history模式的区别(纯文本总结版)

Vue-Router中hash模式和history模式的区别

其实hash 模式和 history 模式都属于浏览器自身的特性,并不是vue-router独有的,vue-router只是通过调用浏览器提供的接口利用这两个特性来实现前端路由。前端路由的核心也就是单页面应用的核心就是在不向服务器发送请求的前提下改变视图。hash模式就是#模式,在URL 中#和#后面的字符拼接起来就是hash值,hash 值虽然出现在 URL 中,但不会被包括在 HTTP 请求中,对后端完全没有影响,所以改变 hash 值不会重新加载页面。hash模式背后的原理其实是window对象的onhashchange事件,在通过onhashchange事件监听hash值的改变的同时切换视图,这就是通过hash模式实现前端路由的核心原理。其实hash模式是浏览器很早之前就支持的一种特性,优点就是兼容性特别好,有人会说#出现在url中比较难看是hash的一个缺点,但是我觉得这不能说成是缺点,因为在这种底层问题上要的就是性能和稳定,而不是什么好不好看。history模式是利用了浏览器的history对象的 pushState()replaceState() 这两个方法,这两个方法接收的都是state状态对象,页面标题,页面地址url这三个参数,这两个方法应用于修改浏览器的历史记录栈,但是它们修改历史记录的时候,虽然改变了当前的 URL,但浏览器不会立即向后端发送请求,这就是history实现前端路由的原理。在使用过程中,就像我之前说的那样,hash模式只有hash 符号之前的内容会被包含在请求中,因此对于后端来说,即使没有做到对路由的全覆盖,也不会返回 404 错误,但是使用history模式时,前端的 URL 必须和实际向后端发起请求的 URL 一致,否则将返回 404 错误,这是要注意的地方,当然这个问题可以通过服务端配置解决。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值