天天看點

SPA 單頁Web應用

單頁 Web 應用 (single-page application 簡稱為 SPA) 是一種特殊的 Web 應用。它将所有的活動局限于一個Web頁面中,僅在該Web頁面初始化時加載相應的HTML、JavaScript 和 CSS。一旦頁面加載完成了,SPA不會因為使用者的操作而進行頁面的重新加載或跳轉。取而代之的是利用 JavaScript 動态的變換HTML的内容,進而實作UI與使用者的互動。由于避免了頁面的重新加載,SPA 可以提供較為流暢的使用者體驗。

單頁Web程式的出現是富用戶端發展的必然結果,但是該技術也是有些局限性,是以采用之前需要了解清楚它的優缺點。

良好的互動體驗

使用者不需要重新重新整理頁面,擷取資料也是通過Ajax異步擷取,頁面顯示流暢。

良好的前後端工作分離模式

單頁Web應用可以和RESTful規約一起使用,通過REST API提供接口資料,并使用Ajax異步擷取,這樣有助于分離用戶端和伺服器端工作。更進一步,可以在用戶端也可以分解為靜态頁面和頁面互動兩個部分。

減輕伺服器壓力

伺服器隻用出資料就可以,不用管展示邏輯和頁面合成,吞吐能力會提高幾倍;

共用一套後端程式代碼

不用修改後端程式代碼就可以同時用于Web界面、手機、平闆等多種用戶端;

SEO難度較高

由于所有的内容都在一個頁面中動态替換顯示,是以在SEO上其有着天然的弱勢,是以如果你的站點對SEO很看重,且要用單頁應用,那麼就做些靜态頁面給搜尋引擎用吧。

前進、後退管理

由于單頁Web應用在一個頁面中顯示所有的内容,是以不能使用浏覽器的前進後退功能,所有的頁面切換需要自己建立堆棧管理,當然此問題也有解決方案,比如利用URI中的散列+iframe實作。

初次加載耗時多

為實作單頁Web應用功能及顯示效果,需要在加載頁面的時候将JavaScript、CSS統一加載,部分頁面可以在需要的時候加載。是以必須對JavaScript及CSS代碼進行合并壓縮處理,如果使用第三方庫,建議使用一些大公司的CDN,是以帶寬的消耗是必然的。
AngularJS是一個 MV* 架構,最适于開發用戶端的單頁面應用。它不是個功能庫,而是用來開發動态網頁的架構。它專注于擴充HTML的功能,提供動态資料綁定(data binding),而且它能跟其它架構(如jQuery)合作融洽。

如果你要開發的是單頁應用,AngularJS就是你的上上之選。Gmail、Google Docs、Twitter和Facebook這樣的應用,都很能發揮AngularJS的長處。但是像遊戲開發之類對DOM進行大量操縱、又或者單純需要極高運作速度的應用,就不是AngularJS的用武之地了。

Avalon 是一個 MV* 架構,國内迷你簡單易用的MVVM架構

繼續閱讀