1. 程式人生 > 其它 >前端路由,history 和hash 模式的區別

前端路由,history 和hash 模式的區別

前端路由的功能

  • 改變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