SPA
單頁Web應(yīng)用(single page web application即舌,SPA)怕品,就是只有一張Web頁面的應(yīng)用背伴,是加載單個HTML 頁面并在用戶與應(yīng)用程序交互時動態(tài)更新該頁面的Web應(yīng)用程序呛伴。
SPA的特點:
- 速度:更好的用戶體驗绍填,讓用戶在web app感受native app的速度和流暢昏鹃,
- ·MVVM:經(jīng)典MVVM開發(fā)模式兴蒸,前后端各負其責(zé)盾饮。
- ·ajax:重前端凹炸,業(yè)務(wù)邏輯全部在本地操作戏阅,數(shù)據(jù)都需要通過AJAX同步、提交啤它。
- ·路由:在URL中采用#號來作為當前視圖的地址,改變#號后的參數(shù)奕筐,頁面并不會重載
SPA的兩個缺點:
- 首屏渲染等待時長: 必須得加載完畢,才能渲染出首屏
- seo不友好:爬蟲只能拿到一個div变骡,認為頁面是空的离赫,不利于seo
開發(fā)流程
- 用循環(huán)的視角審視Web應(yīng)用開發(fā)
- 框定一個一致的SPA圖形用戶界面(GUI)和模型
- 將SPA的原則帶回服務(wù)器端
- 聚集于對合適的應(yīng)用進行早期SPA開發(fā) [3]
SPA的優(yōu)缺點
單頁Web程序的出現(xiàn)是客戶端發(fā)展的必然結(jié)果,但是該技術(shù)也是有些局限性塌碌,所以采用之前需要了解清楚它的優(yōu)缺點渊胸。
1、優(yōu)點:
1). 良好的交互體驗
用戶不需要重新刷新頁面台妆,獲取數(shù)據(jù)也是通過Ajax異步獲取翎猛,頁面顯示流暢。
2). 良好的前后端工作分離模式
單頁Web應(yīng)用可以和RESTful規(guī)約一起使用接剩,通過REST API提供接口數(shù)據(jù)切厘,并使用Ajax異步獲取,這樣有助于分離客戶端和服務(wù)器端工作懊缺。更進一步迂卢,可以在客戶端也可以分解為靜態(tài)頁面和頁面交互兩個部分。
3). 減輕服務(wù)器壓力
服務(wù)器只用出數(shù)據(jù)就可以桐汤,不用管展示邏輯和頁面合成而克,吞吐能力會提高幾倍;
4). 共用一套后端程序代碼
不用修改后端程序代碼就可以同時用于Web界面怔毛、手機员萍、平板等多種客戶端;
2拣度、缺點:
1). SEO難度較高
由于所有的內(nèi)容都在一個頁面中動態(tài)替換顯示碎绎,所以在SEO上其有著天然的弱勢,所以如果你的站點對SEO很看重抗果,且要用單頁應(yīng)用筋帖,那么就做些靜態(tài)頁面給搜索引擎用吧。
2). 前進冤馏、后退管理
由于單頁Web應(yīng)用在一個頁面中顯示所有的內(nèi)容日麸,所以不能使用瀏覽器的前進后退功能,所有的頁面切換需要自己建立堆棧管理,當然此問題也有解決方案代箭,比如利用URI中的散列+iframe實現(xiàn)墩划。
3). 初次加載耗時多
為實現(xiàn)單頁Web應(yīng)用功能及顯示效果,需要在加載頁面的時候?qū)avaScript嗡综、CSS統(tǒng)一加載乙帮,部分頁面可以在需要的時候加載。所以必須對JavaScript及CSS代碼進行合并壓縮處理极景,如果使用第三方庫察净,建議使用一些大公司的CDN,因此帶寬的消耗是必然的盼樟。