history和hash都是利用瀏覽器的兩種特性實現前端路由,history是利用瀏覽歷史記錄棧的API實現,hash是監聽location對象hash值變化事件來實現,具體區別如下:
1.hash路由在地址欄URL上有#,用 window.location.hash 讀取。而history路由沒有會好看一點
2.我們進行回車刷新操作,hash路由會加載到地址欄對應的頁面,而history路由一般就404報錯了(刷新是網絡請求,沒有后端準備時會報錯)。
3.hash路由支持低版本的瀏覽器,而history路由是HTML5新增的API。
4.hash的特點在于它雖然出現在了URL中,但是不包括在http請求中,所以對于后端是沒有一點影響的,所以改變hash不會重新加載頁面,所以這也是單頁面應用的必備。
5.history運用了瀏覽器的歷史記錄棧,之前有back,forward,go方法,之后在HTML5中新增了pushState()和replaceState()方法,它們提供了對歷史記錄進行修改的功能,不過在進行修改時,雖然改變了當前的URL,但是瀏覽器不會馬上向后端發送請求。
6.history的這種模式需要后臺配置支持。比如:當我們進行項目的主頁的時候,一切正常,可以訪問,但是當我們刷新頁面或者直接訪問路徑的時候就會返回404。
以上就是關于history、hash的區別介紹的內容。