Hash VS History区别:
Hash模式:
1、url路径会出现#字符
2、Hash值不包括在HTTP请求中,它是交由前端路由处理,所以改变hash值时不会刷新页面,也不会向服务器发送请求
3、Hash值的改变会触发hashchange事件`
History模式:
1、整个地址重新加载,可以保存历史记录,方便前进后退
2、使用HTML5 API(旧浏览器不支持)和HTTP服务端配置,没有后台配置的话,页面刷新时会出现404
Hash and History原理:
1、hash模式:在浏览器中符号“#”,#以及#后面的字符称之为hash,用 window.location.hash 读取。特点:hash虽然在URL中,但不被包括在HTTP请求中;用来指导浏览器动作,对服务端安全无用,hash不会重加载页面。
2、history模式:history采用HTML5的新特性;且提供了两个新方法: pushState(), replaceState()可以对浏览器历史记录栈进行修改,以及popState事件的监听到状态变更