前端路由,url的匹配处理在前端页面进行,而不向后端请求。在页面不刷新的情况下,更改页面内容的手段。
首先url更改时,页面不能刷新,不然肯定会向服务器发送请求。这里就有两个基础的方法可以做到,window.location和window.history
location.href:完整的网址
location.hash: hash值虽然出现在url中,但不会被包含在http请求中,是 URL 中 hash (#) 及后面的那部分,常用作锚点在页面内进行导航,因此改变hash值不会重新加载页面
location.replace(url):不会将新的url添加到浏览器访问历史中,而是替换掉当前的url
每次改变location.hash值,都会在浏览器访问历史中增加一个记录
可以通过hashchange事件来监听hash值的变化
history.go(),history.back()
通过浏览器前进后退改变 URL 时 ,将触发popstate事件。
history.pushState 修改当前url,会再浏览器访问历史中增加一个记录
history.replaceState 替换当前url,不会增加浏览器访问历史记录
调用history.pushState()或history.replaceState()修改url时不会触发popstate事件,浏览器不会刷新页面
history模式和hash模式除了监听的事件不同,改变url的方式不同,之后的处理是一样的