如何看待前端路由?路由的作用是什么?
在我看來路由有兩個方面的作用:
- 通過路由變化,實現頁面之間的跳轉和切換
- 可以通過路由傳遞參數(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文檔