前端路由,history 和hash 模式的區別
阿新 • • 發佈:2022-03-16
前端路由的功能
- 改變url不向伺服器傳送請求
- 檢測url的變化
- 解析url的資訊來匹配路由規則
- hash模式和history模式都能夠實現這個功能
hash模式
- 指的就是#和之後的字元
- hash也稱作錨點,本身是作為頁面定位的,可以是id對應元素顯示在可視區域內。
- hash改變不會向瀏覽器傳送請求
- hash改變會觸發hashChange事件
- 瀏覽器的前進和後退,能夠控制hash值
- html5 的history之前,都是使用hash來實現前端路由的
- hash本來是用來做頁面定位的,如果用來做路由的話,錨點功能就不能用了
- hash的路由傳參,有體積的限制,因為傳參基於url
- hash之後的內容,不會包含在請求中
- 只能修改#之後的,所以只能設定與當前同文檔的url
- 設定與當前相同的url,歷史記錄不會增加
history模式
- 路由傳參,可以放在url裡面,也可以單獨放在一個物件裡面
- 改變不會向瀏覽器傳送請求
- 改變會觸發onpopstate事件
- 可以設定當前同源文件的任何url
- pushState設定與當前相同的url,歷史記錄還是會增加
- 需要後端配合,將所有訪問都指向index.html。否則使用者重新整理頁面,就會404