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