路由的hash和history模式

2021-09-11 11:38:55 字數 1279 閱讀 5956

為了構建 spa(單頁面應用),需要引入前端路由系統,這也就是 vue-router 存在的意義。前端路由的核心,就在於 —— 改變檢視的同時不會向後端發出請求。 為了達到這種目的,瀏覽器當前提供了以下兩種支援:

history —— 利用了 html5 history inte***ce 中新增的 pushstate() 和 replacestate() 方法。(需要特定瀏覽器支援) 這兩個方法應用於瀏覽器的歷史記錄棧,在當前已有的 back、forward、go 的基礎之上,它們提供了對歷史記錄進行修改的功能。只是當它們執行修改時,雖然改變了當前的 url,但瀏覽器不會立即向後端傳送請求。

hash模式下,僅hash符號之前的內容會被包含在請求中,如因此對於後端來說,即使沒有做到對路由的全覆蓋,也不會返回404錯誤;

history模式下,前端的url必須和後端發起請求的url一致,例如如果後端缺少對book/id的路由處理,就會返回404錯誤。

hash模式的背後是onhashchange事件,可以在window物件上監聽這個事件:

window.onhashchange = function(event)

複製**

history包括go(),forward(),back()方法。

history.go(-2);

history.go(2);//前進兩次

history.back();

history.forward();

複製**

修改歷史狀態,包括了pushstate()和replacestate()兩種方法,這兩個方法接收三個引數,stateobj,title,url。

history.pushstate(, 'red', 'red'})

window.onpopstate = function(event)

}history.back();

history.forward();

複製**

通過pushstate方法把頁面狀態儲存在state物件中,當頁面的url再變回這個url時,可以通過event.state取到這個state物件,從而可以對頁面狀態進行還原,主要是滾動條的位置,閱讀進度,組建的開關等等。

history模式不怕前進不怕後退怕重新整理,f5。

重新整理是實實在在的去請求後端了。

在hash模式下,前端路由修改的是#中的資訊,而瀏覽器請求是不帶他的,所以沒有問題。但是在history模式下你可以自由的修改path,當重新整理時如果沒有相應的的響應或者資源,會分分鐘重新整理乙個404出來。

hash路由和history路由

hash模式 url後面的有乙個 後面的字串,叫hash值,也叫錨點。1 hash 值變化不會導致瀏覽器向伺服器發出請求 2 hash 改變會觸發 hashchange 事件 當hash值變化了,就會觸發事件 3 在 html5 的 history 出現前,基本都是使用 hash 來實現前端路由的 ...

關於hash路由和history路由

1.參考文件 hash模式?history模式 window.location.hash和search掐架 2.問題 3.關於兩種路由的組成 hash模式 簡單總結 除去伺服器需要使用的,能使用的僅剩下了hash,hash改變不會重新整理頁面,hash值改變會增加歷史記錄 就是會有頁面的前進後退 號...

hash和history路由的區別

在了解路由模式前,我們先看下 什麼是單頁面應用,vue router 的實現原理是怎樣的,這樣更容易理解路由。單頁面應用 spa 的核心之一是 更新檢視而不重新請求頁面。vue router 在實現單頁面路由時,提供了兩種方式 hash 模式和 history 模式 vue2是 根據 mode 引數...