眾所周知,hash、history都是通過瀏覽器實(shí)現(xiàn)兩種特性的,history是利用瀏覽歷史記錄棧的API實(shí)現(xiàn),hash是監(jiān)聽location對象hash值變化事件來實(shí)現(xiàn),具體區(qū)別如下:
1.hash路由在地址欄URL上有#,用 window.location.hash 讀取。而history路由沒有會(huì)好看一點(diǎn)
2.我們進(jìn)行回車刷新操作,hash路由會(huì)加載到地址欄對應(yīng)的頁面,而history路由一般就404報(bào)錯(cuò)了(刷新是網(wǎng)絡(luò)請求,沒有后端準(zhǔn)備時(shí)會(huì)報(bào)錯(cuò))。
3.hash路由支持低版本的瀏覽器,而history路由是HTML5新增的API。
4.hash的特點(diǎn)在于它雖然出現(xiàn)在了URL中,但是不包括在http請求中,所以對于后端是沒有一點(diǎn)影響的,所以改變hash不會(huì)重新加載頁面,所以這也是單頁面應(yīng)用的必備。
5.history運(yùn)用了瀏覽器的歷史記錄棧,之前有back,forward,go方法,之后在HTML5中新增了pushState()和replaceState()方法,它們提供了對歷史記錄進(jìn)行修改的功能,不過在進(jìn)行修改時(shí),雖然改變了當(dāng)前的URL,但是瀏覽器不會(huì)馬上向后端發(fā)送請求。
以上就是關(guān)于history、hash區(qū)別詳情的相關(guān)介紹。