現代開發模式 | 傳統開發模式 |
---|---|
Vue、React、Angular | jQuery |
只需花費20%時間在視圖層 | 需花費80%時間在視圖層 |
數據層與視圖層自動綁定 | 數據與視圖不分離 |
MVC爲Model(模型,同時也是數據)、View(視圖)、Controller(控制)的縮寫,它表明程序分爲三層:html
MVC三層相互獨立,每一層內部的工做並不影響其它層,各自提供對外接口,供上層調用。這樣程序就實現模塊化,各層進行修改都不會影響其它層的功能。前端
MVC | MVP | MVVM |
---|---|---|
分爲3個部分:視圖(View)用戶界面、控制器(Controller)業務邏輯、模型(Model)數據保存。 | MVP將Controller更名爲Presenter,同時改變了通訊方向。 | MVVM模式將Presenter更名爲ViewModel,基本上與MVP模式徹底一致。 |
通訊方式 | MVVM模式通訊方向 | |
MVC模式的通訊是單向的: 1. View傳送只領到Controller。 2. Controller完成業務邏輯後,要求Model改變狀態。 3. Model將新的數據發送到View,用戶獲得反饋。 |
MVP模式的通訊方式: 1. 各部分之間的通訊是雙向的。 2. View與Model不發生聯繫,都經過Presenter傳遞。 3. View很是薄,不部署任何業務邏輯,稱爲「被動式圖」(Passive View),即沒有任何主動性,而Presenter很是厚,全部邏輯都部署在這裏。 |
MVVM模式與MVP模式的區別是,它採用雙向綁定(data-binding):View的變更,自動反應在ViewModel,反之亦然。View、Angular和Ember都採用這種模式。 |
服務端渲染 | 客戶端渲染 |
---|---|
由服務端將數據組合成html標籤後,由前端展現,如普通HTML頁面 | 服務端向前端傳輸數據,如JSON,由前端組裝成html頁面展現 |
如Pug、EJS等模板引擎 | 如Vue、React等框架 |
優勢:1. 安全,由於服務端的內容對前端都不可見 2. 對SEO有利,因爲搜索引擎只會讀取html,不會執行JavaScript,所以客戶端渲染的頁面在搜索引擎看來只是個空白頁面。 | 優勢:1. 節省流量,數據量少 2. 用戶體驗好,能夠不用刷新頁面 |
通常須要安全性高的頁面,好比註冊、登陸,會使用服務端渲染 | 安全性要求不高的頁面,如商品頁等,會使用客戶端渲染 |