如何選擇使用SPA還是MPA
SPA :Single-Page Application,單一頁面應用
MPA:Multiple-Page Application,多頁面應用
基於內容優先原則(content first)來思考這個問題,內容是用戶決定是否使用應用的原因,因此需要回答兩個問題
- 你想展示怎樣的內容給用戶
- 用戶最希望看到怎樣的內容
Single-Page Application
單一頁面程序在瀏覽器中運行,在使用期間不需要用戶刷新和重新加載資源。Gmail
,Google Maps
,Facebook
,Github
等都是這種架構的應用。使用SPA架構的應用程序致力於優秀的用戶體驗,因為這種架構不需要刷新,不需要等待,用戶似乎在使用本地程序一般自然,它僅僅是一個網頁,通過Javascript
加載了所有的內容
優點
- 快速,在應用程序生命周期內,所有的資源只需要加載一次,后續僅存在一些與服務器的api請求。
- 開發更容易,不需要服務端路由來處理,所以很容易開始,甚至可以通過本地打開html的方式使用我們的應用程序。
- 更容易使用Chrome進行調試
- 更容易制作手機應用程序,因為可以重用大量的代碼
- 更高效的使用緩存,一次加載全部的資源,甚至可以離線使用
缺點
- 很難做SEO優化,這曾經是個難點,但是目前可以使用服務端渲染來處理這個問題。
- 首次加載緩慢,因為首次加載時需要加載全部的資源。
- 相比較傳統網頁應用,更容易被跨站腳本攻擊
Javascript
的內存弱點有可能使高配電腦也變得卡頓
Multiple-Page Application
多頁面程序是我們所知道多更傳統的方式,每次請求都會返回一部分頁面用於展示,一般有更多的層次,也更為復雜。因為Ajax
技術的存在,我們可以局部刷新,一定程度上降低了網絡負載,但是相對SPA結構的應用,在開發上會更復雜一些。
優點
- 對用戶來講,更明確的功能指引,以及更少深度的層次結構
- 非常利於SEO
缺點
- 前后端開發關聯緊密。
- 開發更復雜,開發者需要同時在前后端展開工作,將導致更長的開發周期。
使用SPA還是MPA
如果你有風格迥異的內容以及復雜的分類,那建議使用MPA。
如果的內容擁有一致的體驗,那建議使用SPA。
另外一種方式擁有兩者的優點和更少的缺點,考慮Hybird site