简答Hash和History路由的区别及原理

88 阅读1分钟

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事件的监听到状态变更