如何看待history和hash的區別
如何看待前端路由?路由的做用是什麼?
在我看來路由有兩個方面的做用:html
- 經過路由變化,實現頁面之間的跳轉和切換
- 能夠經過路由傳遞參數(query)
路由的種類
路由的種類能夠分爲如下四種前端
- hash 主要是基於錨點實現
- browser 使用的是
html5
中的history
這個api來實現的,每次路由發生變化都會重定向
- memory 這種實現是在內中維護一個堆棧管理歷史記錄,因爲比較複雜,如今通常都不用了
- static 是後端管理路由的模式
只介紹前端經常使用的二者路由方式
hash路由
hash路由的優勢html5
- 兼容性比較好,兼容性達到了ie8
- 絕大數框架的框架都基本支持hash路由方式
- 除了會發送ajax和資源加載以外不會發送其餘請求
- 不須要在服務端進行任何設置和開發
hash路由的缺點ajax
- 服務端沒法準確捕獲路由的信息
- 對於須要錨點功能的需求會與當前路由機制發生衝突
- 對於須要重定向的操做,後段沒法獲取url所有內容,致使後臺沒法獲得url數據,典型的例子就是微信公衆號的oauth驗證。
browser路由
browser路由的優勢後端
- 當發生路由重定向時不會丟失url數據 ,後端也能夠拿到這個數據
- 固然,絕大多數框架同樣實現了
browser
路由的方式
- 後端能夠準確追蹤到路由
- 可使用history.state獲取路由的信息
使用browser的缺點api
- 兼容性不如hash 。兼容性只到ie10
- 須要後端支持,每次返回html文檔
歡迎關注本站公眾號,獲取更多信息