Vue路由中的hash和history模式的區別及原理


Vue路由中的hash和history模式的區別及原理

眾所周知、vue-router 具有hashhistory兩種路由模式。以Vue3為列

import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
import routes from './routes'

const router = createRouter({
  history: createWebHistory(), // 或者 createWebHashHistory
  routes
})

export default router

但是選擇哪種模式比較合適呢,下面我們來探討兩種模式的優點及缺點

hash模式

優點

  • 兼容性強,兼容性達到了IE8
  • 除發送ajax和資源請求外不會發送其他多余請求
  • 改變#后的路徑、不會自動刷新頁面
  • 無需服務端進行配合

缺點

  • 訪問路徑上包含#,不美觀
  • 對於需要錨點功能的需求會與當前路由機制發生沖突
  • 重定向操作時,后段無法獲取url完整路徑。

history模式

優點

  • 符合url地址規范, 不需要#, 使用起來比較美觀
  • 可以使用history.state獲取完整的路由信息
  • 后端可以獲取到完整的路由信息

缺點

  • 兼容性只到IE10
  • 改變url路徑后、會重新請求資源。
  • 若訪問的路由地址不存在時、會報404,需服務端配合支持重定向返回統一的404頁面。

原理

hash模式靈活運用了html的瞄點功能、改變#后的路徑本質上是更換了當前頁面的瞄點,所以不會刷新頁面。
history是使用了 H5 提供的pushState() 和 replaceState(),允許開發者直接更改前端路由,即更新瀏覽器 URL 地址而不重新發起請求(將url替換並且不刷新頁面)。


免責聲明!

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



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