定義
單頁 Web 應用 (single-page application 簡稱爲 SPA) 是一種特殊的 Web 應用。它將全部的活動侷限於一個Web頁面中,僅在該Web頁面初始化時加載相應的HTML、JavaScript 和 CSS。一旦頁面加載完成了,SPA不會由於用戶的操做而進行頁面的從新加載或跳轉。取而代之的是利用 JavaScript 動態的變換HTML的內容,從而實現UI與用戶的交互。因爲避免了頁面的從新加載,SPA 能夠提供較爲流暢的用戶體驗。前端
優勢
- 良好的交互體驗 前端進行的是局部的渲染,避免了沒必要要的跳轉和重複的渲染。
- 先後端職責業分離(前端負責view,後端負責model),架構清晰 單頁web應用能夠和RESTful規約一塊兒使用,經過REST API提供接口數據,並使用Ajax異步獲取,這樣有助於分離客戶端和服務器的工做。
- 減輕服務器的壓力 服務器只須要提供數據,不須要管前端的展現邏輯和頁面合成,提升了 性能 SPA應用中服務器能夠先將一份包含靜態資源(HTML CSS JS等)的靜荷數據(payload)發送給客戶端,以後客戶端只須要獲取渲染頁面或視圖數據便可,
- 共用一套後端程序代碼 不用修改後端程序代碼就能夠同時用於web界面、手機、平板燈多種客戶端
缺點
- SEO(搜索引擎優化)難度高 因爲全部內容都在一個頁面中進行動態的替換,也就是利用hash片斷實現路由,而利用hash片斷不會做爲HTTP請求中的一部分發送給服務器,因此在SEO上有着自然的弱勢 而SPA使用哈希片斷的目的是;片斷內容發送變化時,瀏覽器不會像URL發送變化時那樣發送請求,這樣就能夠只請求頁面或渲染所需的數據,而不是每個頁面獲取並解析整份文檔
- 首次加載時間過長 爲實現單頁Web應用功能及顯示效果,須要在加載頁面使將js、CSS統一加載,部分頁面按需加載。
- 頁面複雜都提升,複雜邏輯程度成倍 因爲後端只提供數據而再也不管前端的展現邏輯和頁面合成,因此這些展現邏輯和頁面合成都須要在前端進行編寫(前進、後退等),因此會大大提升頁面的複雜性和邏輯的難度