什么是单页应用
在早期的 Web 應用中,前端的作用很弱,業務邏輯和數據處理都在后端,后端給前端返回一個 HTML 頁面,前端只負責展示。在這種模式下,單個 HTML 頁面被當做一個功能原件,表單提交,超鏈接跳轉都可以用來重新請求新的 HTML 頁面,從而達到給用戶展示新的頁面的目的。在這種方式中,你可以感覺到頁面總是在不停的刷新,一個點擊可能都需要等待很久,這是因為,當頁面變化時,所有資源都需要重新請求。這些問題導致了用戶體驗不佳,也浪費了資源。單頁應用便很好的解決了這些問題。
?
1、概念
什么是單頁應用呢?單頁應用的全稱是 single-page application,簡稱 SPA,它是一種網站應用的模型,它可以動態重寫當前的頁面來與用戶交互,而不需要重新加載整個頁面。單頁應用的流暢性讓 Web 應用更像桌面端或 Native 應用了。相對于傳統的 Web 應用,單頁應用做到了前后端分離,后端只負責處理數據提供接口,頁面邏輯和頁面渲染都交給了前端。前端發展到現在,單頁應用的使用已經很廣泛,目前時興的 React、Vue、Angular 等前端框架均采用了 SPA 原則。單頁應用意味著前端掌握了主動權,也讓前端代碼更復雜和龐大,模塊化、組件化以及架構設計都變得越來越重要
?
2、工作原理
SPA 的一個重要實現就是改變路由時,頁面不刷新。實現這個功能,通常有兩種方式:使用 window.history 對象或 location.hash。
?
2.1 history 對象
window.history 包含了瀏覽器的歷史信息,它有以下幾種常用方法:
-
history.back():與在瀏覽器點擊后退按鈕相同;
-
history.forward():與在瀏覽器中點擊按鈕向前相同;
-
history.go(n):接受一個整數作為參數,移動到該整數指定的頁面,比如 go(1) 相當于 forward(),go(-1) 相當于 back(),go(0) 相當于刷新當前頁面。
HTML5 對 history 對象新增了 pushState() 和 replaceState() 方法,這兩個方法可以往歷史棧中添加數據,給用戶的感覺就是瀏覽器的 url 改變了,但是頁面并沒有重新加載。pushState() 是在瀏覽記錄中添加一個新記錄,replaceState() 則是修改當前的瀏覽器記錄,這是二者的細微差別,使用時參數的字段和含義都是一樣的。
?
2.2 hash
hash 是 location 對象的屬性,它指的是當前 url 的錨,也就是從 # 號開始的部分。修改 location.hash 并監聽 window 的 hashchange 事件,也能達到同樣的目的。
3、優缺點
SPA 可圈可點,現在已被大家廣泛使用,也得到了主流框架的支持,但是它也有局限性,我們將它的優缺點總結如下。
優點:
?
缺點:
?
小結
在本節中,我們簡單理解了 SPA 以及 SPA 在路由層面的實現,需要掌握:
-
理解 SPA 是什么;
-
SPA 路由的工作原理;
-
了解 SPA 的優缺點
?
另,SPA最重要的兩個注意點:
?
還有一篇帖子:
SPA(單頁面應用)的基本實現原理
總結
- 上一篇: 联想服务器s650装系统,如何精简联想
- 下一篇: 流量监测NetLimiter v4.1.