hash模式:
-
hash路由模式是比較好區(qū)分的瞭郑,凡是的url后帶有
#
的都屬于hash模式 -
hash
#
后的值辑鲤,不會包含在http請求中井赌,改變hash的值不會引起頁面的重新加載(他是前)端路由交互處理闸翅,#后面hash值變化不會導(dǎo)致瀏覽器像服務(wù)器發(fā)送請求伶椿,瀏覽器不發(fā)送請求辜伟,也就不會刷新頁面) -
hash原理:
onhashchange
事件,可以在window對象上監(jiān)聽這個事件(每次hash值的變化脊另,都會出發(fā)hashchange事件游昼,通過這個事件我們就可以知道hash值發(fā)生了哪些變化,通過監(jiān)聽hashchange來實現(xiàn)更新頁面部分內(nèi)容操作) -
會創(chuàng)建
hashhistory
對象尝蠕,在訪問不同的路由會發(fā)生兩種事件:hashhistory.push():將新的路由添加到瀏覽器訪問的歷史棧頂烘豌,hashhistory.replace()替換到當(dāng)前棧 -
hash可以兼容到
ie8
以上
history模式:
-
url不帶參數(shù),所以看起來比較美觀
-
history依賴于前后端交互看彼,即將url修改的就和正常請求的后端url一樣廊佩,如后端沒有配置對應(yīng)的/user/id的路由處理,就會返回404錯誤
-
history原理:
onpopstate
事件靖榕,當(dāng)瀏覽器跳轉(zhuǎn)到新的狀態(tài)時會觸發(fā)popstate事件 -
history可以兼容到
ie10