前端路由的一個大背景就是當下流行的單頁應用SPA,一些主流的前端框架,如vue、react、angular都屬於SPA,那什麼是SPA呢?
SPA(single-page application)單頁面應用,就是瀏覽器只載入了一個URL地址,一個頁面,應用的所有功能、互動都在這個頁面內進行。而實現單頁面應用的基礎就是ajax
,通過非同步請求動態的切換頁面內容、實現互動,頁面整體沒有重新整理。這避免了頁面URL跳轉,使用者體驗也不會中斷,就像原生應用一樣,體驗比較好。越來越多的系統在使用SPA,尤其是WebApp中使用廣泛。
與SPA
單頁應用對應的就是多頁應用MPA
,當然兩者不是非此即彼的,主要基於業務需求,是可以共存的。
區別 | 單頁面應用(SPA) | 多頁面應用(MPA) |
---|---|---|
頁面組成 | 一個主頁,包含多個頁面片段 | 多個主頁面 |
重新整理方式 | 區域性重新整理 | 整頁重新整理 |
url模式 | hash 雜湊模式 、history 歷史模式 |
history 歷史模式 |
SEO搜尋引擎優化 | 難實現,採用頁面靜態化方式優化 | 容易實現 |
資料傳遞 | 同一應用內,容易 | 通過url、cookie、localStorage等傳遞,複雜 |
渲染效能 | 首次載入資源多稍慢,切換快,體驗良好 | 切換載入資源,速度慢,使用者體驗差 |
轉場動畫 | 容易實現 | 好像實現不了 |
維護成本 | 相對容易 | 相對複雜 |
SPA的主要表現就是更新檢視而不重新請求頁面,要實現前端的頁面的自主路由控制,而不會重新整理頁面,涉及兩種主流的技術:hash
模式、history
模式,這算是前端路由的核心原理,簡單瞭解一下吧!
hash
( /hæʃ/ )是URL地址中#號後面的內容(包括#),原本的作用是用於HTML頁面內部定位的描點,描點的變化不會導致頁面重新載入。HTTP請求中也不會帶#,所以重新整理也不影響,這是瀏覽器端的本地行為。
hash
的變化不會重新整理頁面,只會觸發瀏覽器定位錨點,這是hash
實現前端路由的基本原理。hash
:window.location.hash
hash
變更事件:window.hashchange
監聽hash
變化。hash
會進入瀏覽器歷史記錄。所以,實現過程就比較簡單了!
❶ 監測hash變化:通過hashchange
事件監測hash
變化 。
❷ 載入資源:根據hash
值匹配不同資源進行載入、切換,在Vue中切換的其實就是不同的元件。