hash路由
hash路由的優點
- 兼容性比較好,兼容性達到了ie8
- 絕大數框架的框架都基本支持hash路由方式
- 除了會發送ajax和資源加載之外不會發送其他請求
- 不需要在服務端進行任何設置和開發
hash路由的缺點
- 服務端無法准確捕獲路由的信息
- 對於需要錨點功能的需求會與當前路由機制發生沖突
- 對於需要重定向的操作,后段無法獲取url全部內容,導致后台無法得到url數據,典型的例子就是微信公眾號的oauth驗證。
browser路由
browser路由的優點
- 當發生路由重定向時不會丟失url數據 ,后端也可以拿到這個數據
- history 沒有#,url的改變會向服務器發請求;彌補了hash的錨點缺陷(本來hash有錨點功能,是做頁面定位的,但是用來做路由就不行了),可以在url里傳參也可以把參數放在一個特定的對象里面
- 當然,絕大多數框架一樣實現了 browser路由的方式
- 后端可以准確追蹤到路由
- 可以使用history.state獲取路由的信息
使用browser的缺點
- 兼容性不如hash 。兼容性只到ie10
- 需要后端支持,每次返回html文檔