如何看待history和hash的區別


如何看待前端路由?路由的作用是什么?

在我看來路由有兩個方面的作用:

  • 通過路由變化,實現頁面之間的跳轉和切換
  • 可以通過路由傳遞參數(query)

路由的種類

路由的種類可以分為以下四種

  • hash 主要是基於錨點實現
  • browser 使用的是html5中的history 這個api來實現的,每次路由發生變化都會重定向
  • memory 這種實現是在內中維護一個堆棧管理歷史記錄,由於比較復雜,現在一般都不用了
  • static 是后端管理路由的模式

只介紹前端常用的兩者路由方式

hash路由

hash路由的優點

  • 兼容性比較好,兼容性達到了ie8
  • 絕大數框架的框架都基本支持hash路由方式
  • 除了會發送ajax和資源加載之外不會發送其他請求
  • 不需要在服務端進行任何設置和開發

hash路由的缺點

  • 服務端無法准確捕獲路由的信息
  • 對於需要錨點功能的需求會與當前路由機制發生沖突
  • 對於需要重定向的操作,后段無法獲取url全部內容,導致后台無法得到url數據,典型的例子就是微信公眾號的oauth驗證。

browser路由

browser路由的優點

  • 當發生路由重定向時不會丟失url數據 ,后端也可以拿到這個數據
  • 當然,絕大多數框架一樣實現了 browser路由的方式
  • 后端可以准確追蹤到路由
  • 可以使用history.state獲取路由的信息

使用browser的缺點

  • 兼容性不如hash 。兼容性只到ie10
  • 需要后端支持,每次返回html文檔


免責聲明!

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



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