Vue路由的兩種模式hash和history


核心:更新視圖,都不會重新請求頁面,在發生改變的時候,都會在瀏覽器中新增一條記錄,通過這個記錄,來實現更新視圖但是不請求后台

hash模式:(http://abc.com/#/hello),hash值為#/hello,包含在URL中,可通過 window.location.hash 獲取。

      hash("#") 的作用是加載 URL 中指示網頁中的位置。

      hash的改變事件可以監聽:window.addEventListener("hashchange",funcRef,false);

      hash值(可以通過window.localtion.hash獲取)每一次發生改變,瀏覽器都會在歷史記錄當中新增一個記錄。

      hash(HashHistory)有兩個方法,push()和replace()

      push()方法將新路由添加到歷史記錄的棧頂,replace()方法則是把當前路由替換成新的路由。

history模式:(),history模式需要后台配置支持。如果后端沒有配置對應/user/id的路由處理,則會返回404錯誤。

      history(HTML5History)是瀏覽器歷史記錄棧提供的接口,通過back()、forward()、go()等方法,我們可以讀取瀏覽器歷史記錄棧的信息,進行各種跳轉操作。

      pushState()、replaceState() 使得我們可以對瀏覽器歷史記錄棧進行修改:

        window.history.pushState(stateObject,title,url)

        window.history.replaceState(stateObject,title,url)

      history的兩個方法和hash的兩個方法並沒有什么區別

      history監聽地址變化:window.onpopstate

 

兩種模式的比較:

      1、history設置的新URL可以是同源的任意URL,而hash模式只能夠修改#后面的部分,故只可設置與當前同文檔的URL;

      2、history可以添加任意類型的數據到記錄當中,hash模式只能夠添加短字符串;

      3、history模式可以額外添加title屬性,提供后續使用;

      4、history模式則會將URL修改得就和正常請求后端的URL一樣,如后端沒有配置對應/user/id的路由處理,則會返回404錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM