hash模式url里面永遠(yuǎn)帶著#號(hào),我們?cè)陂_發(fā)當(dāng)中默認(rèn)使用這個(gè)模式。那么什么時(shí)候要用history模式呢镀首?如果用戶考慮url的規(guī)范那么就需要使用history模式,因?yàn)閔istory模式?jīng)]有#號(hào)鼠次,是個(gè)正常的url適合推廣宣傳更哄。當(dāng)然其功能也有區(qū)別,比如我們?cè)陂_發(fā)app的時(shí)候有分享頁(yè)面腥寇,那么這個(gè)分享出去的頁(yè)面就是用vue或是react做的成翩,咱們把這個(gè)頁(yè)面分享到第三方的app里,有的app里面url是不允許帶有#號(hào)的赦役,所以要將#號(hào)去除那么就要使用history模式麻敌,但是使用history模式還有一個(gè)問題就是,在訪問二級(jí)頁(yè)面的時(shí)候掂摔,做刷新操作术羔,會(huì)出現(xiàn)404錯(cuò)誤,那么就需要和后端人配合讓他配置一下apache或是nginx的url重定向乙漓,重定向到你的首頁(yè)路由上就ok啦级历。
原文鏈接:https://blog.csdn.net/fifteen718/article/details/82529433
下面具體說(shuō)下hash 以及 history 模式加深記憶:
一 ,hash
路由的哈希模式其實(shí)是利用了window可以監(jiān)聽onhashchange事件叭披,也就是說(shuō)你的url中的哈希值(#后面的值)如果有變化寥殖,前端是可以做到監(jiān)聽并做一些響應(yīng)(搞點(diǎn)事情),這么一來(lái)涩蜘,即使前端并沒有發(fā)起http請(qǐng)求他也能夠找到對(duì)應(yīng)頁(yè)面的代碼塊進(jìn)行按需加載嚼贡。
二,history
HTML5新推出的API :pushState與replaceState
作用就是可以將url替換并且不刷新頁(yè)面同诫,http并沒有去請(qǐng)求服務(wù)器該路徑下的資源粤策,一旦刷新就會(huì)顯示404。
解決辦法
history模式下刷新報(bào)404的弊端呢剩辟?
需要服務(wù)器端操作,將不存在的路徑請(qǐng)求重定向到入口文件(index.html)