為什麼前端模型-檢視-控制器MVC會死?
越來越越多的前端開發人員採用React.js+Redux這樣的單向架構,因此,經典的模型檢視控制器MVC模式未來會怎麼樣呢?
那我們先回顧一下前期架構的發展。在過去的四年中,我一直在大量的Web專案中花費了大量時間設計前端和整合框架。在2010年以前javascript都是使用JQuery。自此以後,開發人員開始考慮使用單頁應用。Backbone和Knockout開始流行。
那時這些框架許多原理還是相當新的,所以設計者得從其他地方尋找來靈感,他們從伺服器後端借用了最佳實踐。當react.js首次出現的時候,很多開發人員嘲笑它,因為它的一些行為在處理html和javascript時是反直覺的。但是他們忽略了react的重要貢獻,就是帶來了基於元件的架構。
react並沒有發明元件,而是把這一想法深入下去。
這一突破的想法卻被facebook忽視了,所以他們宣傳react時,還是把它作為mvc的v。
2015年帶來了思想上面的重要突破從熟悉的mvc模式到單向架構和資料流。這是Flux和函式反映式程式設計,如Redux和RxJS。那麼,mvc問題出現在哪裡呢?
mvc仍然是伺服器端好的框架,m v c在伺服器端和客戶端原理不同。
m v c的檢視和控制器在伺服器端是可以完全分離的,兩者通過請求和響應聯絡。但是檢視和控制器如果都在客戶端,沒有了請求和響應這樣一進一出方向性的物件,只有一個事件,而且事件是可以雙向進出,造成混亂,檢視與控制器兩者通過這些混亂的雙向事件直接耦合在一起,控制器既處理介面事件,又處理業務邏輯,而模型要處理介面狀態和應用狀態,這些都違背了單一職責。
而react.js的flux事件單向流程簡化雙向事件的無序,使得資料流向變得清晰,再加上Redux將業務邏輯和應用狀態從中分離,這樣,應用狀態業務邏輯和介面狀態,事件處理以及檢視都變成單獨分離的元件,基於元件架構在前端客戶端替代了MVC。
相關文章
- 為什麼Web 設計會“死”?Web
- MVC 在前端已死?MVC前端
- 理解模型,檢視和控制器(C#)模型C#
- 【討論】MVC 在前端已死?MVC前端
- 數倉的等待檢視中,為什麼會有Hashjoin-nestloopOOP
- GDB為什麼檢視不了原始碼?原始碼
- 為什麼機器學習模型會越來越糟? - Santiago機器學習模型Go
- Jquery會死嗎?我為什麼不用vue寫富文字!jQueryVue
- 圖解:黑莓為什麼死?圖解
- 轉享:為什麼模型會打敗指令碼?模型指令碼
- 鎖賦值給其他變數為什麼會死鎖呢?賦值變數
- 為什麼dispatch_sync在主執行緒會死鎖執行緒
- [.net 物件導向程式設計深入](6).NET MVC 6 —— 模型、檢視、控制器、路由等的基本操作物件程式設計MVC模型路由
- [譯] 通過檢視控制器容器和子檢視控制器避免龐大的檢視控制器
- Asp.Net MVC控制器獲取檢視傳值幾種方式ASP.NETMVC
- SpringBoot(3)-MVC自動配置及自定義檢視控制器Spring BootMVC
- 為什麼我不再使用MVC框架?MVC框架
- 為什麼有些程式語言會死而有些能活下來?
- Webform和MVC,為什麼MVC更好一些?WebORMMVC
- 檢視與檢視控制器生命週期
- 你的爬蟲為什麼會被檢測到?爬蟲
- MySql 什麼是檢視MySql
- 為什麼前端這麼多人前端
- 為什麼有時候spring mvc的interceptor會執行兩次SpringMVC
- Spring MVC多檢視SpringMVC
- 為什麼我不贊成開發來寫檢視
- 什麼是前端開發?為什麼要學前端開發?前端
- 檢視v$sql_shared_cursor檢視獲取sql語句為什麼不能共享?SQL
- 【前端筆記】Vuex 是什麼,為什麼需要前端筆記Vue
- oracle 檢視死鎖語句Oracle
- 檢視oracle死鎖程式並結束死鎖Oracle
- 前端,我為什麼不要你前端
- JSON為王 為什麼XML會慢慢淡出人們的視野JSONXML
- MVC自定義檢視規則MVC
- phpstrom用模型where查詢,欄位為什麼不會提示?PHP模型
- MVC模式已死MVC模式
- 什麼是資料庫檢視?資料庫
- iOS10 UI教程檢視的繪製與檢視控制器和檢視iOSUI