history和hash的区别

1.hash带#,history没有
2.history相对比较新,只能兼容ie10,hash能兼容ie8
3.跳转的时候hash只能修改#后面的内容,而history只要是同源的就可以

原理:
hash:通过监听浏览器的onhashchange()事件变化,查找对应的路由规则

history:利用H5的history中新增的两个API pushState()和replaceState()和一个事件onpopstate监听URL变化

pushState()和replaceState()可以用于浏览器的历史记录栈,通过back、forward、go可以对当前浏览器进行修改,当他们发生修改的时候,尽管url变化了,但是不会立即向后端服务器发送请求,除非点击刷新

总结:1.history和hash一般来说都能用,history美观点
2.history修改更自由,
3.两个原理差不多都是通过事件监听,一个是onhashchange(),另一个onpopstate()
4.history必须要和后端保持一致,路由全覆盖,不然容易报404

你可能感兴趣的:(复习,hash,vue)