表现形式的区别
hash模式
http://music.163.com/#/playlist?id=321900890
history模式
http://music.163.com/playlist/321900890
原理区别
- hash是基于锚点,以及onhashchange事件
- history是基于HTML5的History API
history.pushState() IE10以后才支持
histtory.replaceState()
(如果我们要兼容IE9,还是要用hash)
history模式的应用
-
history模式需要浏览器的支持
-
单页面应用中,服务端端不存在http://www.testurl.com/login这样的地址返回找不到该页面
-
在服务器端应该除了静态资源外都返回单页面应用的index.html(这个地方还有点存疑)
在正常切换中,history模式,会直接调用history.pushState,刷新后去服务器端调用,没有配置该路由,会报404
如果配置了index.html,会去加载index.html,然后客户端识别该路由,跳转到改路由