VUE hash路由和history路由的區(qū)別

1.hash路由在地址欄URL上有#,用 window.location.hash 讀取。而history路由沒(méi)有會(huì)好看一點(diǎn)
2.我們進(jìn)行回車刷新操作,hash路由會(huì)加載到地址欄對(duì)應(yīng)的頁(yè)面,而history路由一般就404報(bào)錯(cuò)了(刷新是網(wǎng)絡(luò)請(qǐng)求,沒(méi)有后端準(zhǔn)備時(shí)會(huì)報(bào)錯(cuò))。
3.hash路由支持低版本的瀏覽器,而history路由是HTML5新增的API。
4.hash的特點(diǎn)在于它雖然出現(xiàn)在了URL中,但是不包括在http請(qǐng)求中,所以對(duì)于后端是沒(méi)有一點(diǎn)影響的,所以改變hash不會(huì)重新加載頁(yè)面,所以這也是單頁(yè)面應(yīng)用的必備。
5.history運(yùn)用了瀏覽器的歷史記錄棧,之前有back,forward,go方法,之后在HTML5中新增了pushState()和replaceState()方法,它們提供了對(duì)歷史記錄進(jìn)行修改的功能,不過(guò)在進(jìn)行修改時(shí),雖然改變了當(dāng)前的URL,但是瀏覽器不會(huì)馬上向后端發(fā)送請(qǐng)求。
6.history的這種模式需要后臺(tái)配置支持。比如:當(dāng)我們進(jìn)行項(xiàng)目的主頁(yè)的時(shí)候,一切正常,可以訪問(wèn),但是當(dāng)我們刷新頁(yè)面或者直接訪問(wèn)路徑的時(shí)候就會(huì)返回404,那是因?yàn)樵趆istory模式下,只是動(dòng)態(tài)的通過(guò)js操作window.history來(lái)改變?yōu)g覽器地址欄里的路徑,并沒(méi)有發(fā)起http請(qǐng)求,但是當(dāng)我直接在瀏覽器里輸入這個(gè)地址的時(shí)候,就一定要對(duì)服務(wù)器發(fā)起http請(qǐng)求,但是這個(gè)目標(biāo)在服務(wù)器上又不存在,所以會(huì)返回404

總結(jié)

當(dāng)然history也不是樣樣都好。SPA雖然在瀏覽器里游刃有余,單真要通過(guò)URL向后端發(fā)起HTTP請(qǐng)求時(shí),兩者的差異就來(lái)了。尤其在用戶手動(dòng)輸入U(xiǎn)RL后回車,或者刷新(重啟)瀏覽器的時(shí)候。
1:hash 模式下,僅hash符號(hào)之前的內(nèi)容會(huì)被包含在請(qǐng)求中,如http://www.abc.com,因此對(duì)于后端來(lái)說(shuō),即使沒(méi)有做到對(duì)路由的全覆蓋,也不會(huì)返回404錯(cuò)誤。
2:history模式下,前端的URL必須和實(shí)際向后端發(fā)起請(qǐng)求的URL一致。如htttp://www.abc.com/book/id。如果后端缺少對(duì)/book/id 的路由處理,將返回404錯(cuò)誤

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容