在vue的路由配置中有mode選項
mode:"hash";
mode:"history";
hash
即地址欄 URL 中的 # 符號
hash 雖然出現(xiàn)在 URL 中,但不會被包括在 HTTP 請求中,對后端完全沒有影響,因此改變 hash 不會重新加載頁面。
history
利用了 HTML5 History Interface 中新增的 pushState() 和 replaceState() 方法
它們執(zhí)行修改時,雖然改變了當(dāng)前的 URL,但瀏覽器不會立即向后端發(fā)送請求。
通過history api,我們丟掉了丑陋的#,但是它也有個問題:不怕前進(jìn),不怕后退,就怕刷新,f5,(如果后端沒有準(zhǔn)備的話),因為刷新是實實在在地去請求服務(wù)器的。
在hash模式下,前端路由修改的是#中的信息,而瀏覽器請求時不會將 # 后面的數(shù)據(jù)發(fā)送到后臺,所以沒有問題。但是在history下,你可以自由的修改path,當(dāng)刷新時,如果服務(wù)器中沒有相應(yīng)的響應(yīng)或者資源,則會刷新出來404頁面。