vue-router的兩種模式及原理


兩種模式,分別是 hash模式 和 history模式。

  • hash
    • hash 模式的原理是 onhashchange 事件,可通過 window 對象監聽;
    • 符號本身以及它后面的字符被稱為hash,可以通過 window.location.hash 獲取;
    • hash 雖然包含在瀏覽器的url中,但是它不會包括在HTTP請求中,所以改變hash不會重新加載頁面;
    • 每一次改變hash,都會在瀏覽器的訪問歷史中增加一個記錄,所以可以實現前端路由“更新視圖但不重新請求頁面”的功能,同時也可使用瀏覽器的 前進、后退 功能
  • history:
    • history 的原理是 html5 的幾個新的API,分別是history.back()、history.go()、history.forward()、history.pushState()、history.replaceState()、window.onpopState()這幾個方法;
    • back、forward、go這三個方法都用於切換歷史狀態,分別表示 后退、前進、跳轉;
    • pushState、replaceState這兩個方法主要用於修改歷史狀態,接收三個參數,分別是stateObj、title、url;pushState 是在瀏覽器中新增一條記錄,replaceState是在瀏覽器中替換當前的歷史記錄;這兩個方法中的 stateObj 都會在popState事件被觸發時傳遞過去
    • 使用 history 模式時,需要配合后端的支持,因為url路徑修改后,會請求服務器的數據,如果服務器中沒有相應的響應或者資源,則會出現404錯誤;所以需要在服務器上配置一個默認路徑,當url匹配不到任何靜態資源的時候,返回到同一個頁面(可配置成首頁 index.html )


免責聲明!

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



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