原理的区别
- Hash 模式是基于锚点,以及
onhashchange
事件
通过锚点的值作为路由地址,当路由地址发生变化,触发
onhashchange
事件,根据路径决定页面上呈现的内容
- History 模式是基于HTML5中的History API
history.pushState()
IE10以后才支持 (有兼容性问题)history.replaceState()
pushState()
方法与push()
方法的区别:
当调用history.push()
时,路径会发生变化,这时要向服务器发送请求
当调用history.pushState()
时,不会向服务器发送请求,只会改变浏览器地址栏中的地址,并且把地址保存到历史记录中,所以通过pushState()
可以实现客户端路由
hash与history的切换
- 创建路由时修改mode属性