为什么我不再推荐使用 MVC 框架?
來源:鵝是程序猿
toutiao.com/i6763420080542843399
-
所以V層是否還有必要?
-
所以我認為目前的多終端環境下,新的劃分方式如下:
標題是不是有點聳人聽聞,不過我并不是標題黨。考慮到談論這類大而虛的東西(比如最好的語言)容易引起爭論和被噴,所以還請諸君帶著看戲而不是庭辯的心態來看待本文。
從webform過度到mvc,我曾經驚嘆mvc革命性的變革。過去,在創建應用時通常會按MVC各建一個文件夾,每個文件夾就是一個模塊。MVC三者的職責是這樣的:
1.Controller綁定到某個路由上,接著處理請求參數,然后創建在整個請求中可見的對象,并進行一些業務邏輯上的工作。期間會從數據庫中構造Model,也有可能新建/修改Model后將它們保存入數據庫。最后,Controller會通過View響應用戶的請求,或者返回重定向的報文。基本上業務邏輯都是實現在Controller里面的。(下文為了闡述方便,都以“業務邏輯”特指Controller中的業務邏輯)
2.每個Model往往對應數據庫的一個實體。Model類除了裝數據之外,還提供了跟自己身份相關的一些方法,比如User類提供authenticate方法以用于驗證密碼。Model對象通常還會負責檢驗構造自己的參數是否正確。
3.View負責使用給定的參數渲染模板,并作為響應返回給用戶。View一般是由該框架提供的模板語言寫成。
但是用mvc做過N個項目之后,我越來越發現這種方式在某些方面有著不可忽視的弊端。尤其在現在多端共享數據的web環境,類似于MVC這樣的組織方式已經顯得過氣了,不同的客戶端需要不同的V層,很多時候pc端用v層,h5端,小程序段、App端都有自己的V層,然后數據通過Controller做成api的形式輸出數據。
所以V層是否還有必要?
最近的項目中,Controller直接就是輸出一個JSON數據,這么一來,傳統的View的扮演的戲份還剩多少似乎,我也一直思考如何如何在我們的項目組中進行改進。
過去,View通常由三部分組成:html代碼,控制流程語句,渲染時的上下文。如果提供的是JSON格式的模板,那么View的前兩部分基本不需要了,只需要渲染時的上下文。可是這么一來,為什么我還需要渲染一個JSON模板,目前的前端框架vue,React可以很方便的實現數據渲染。
所以我認為目前的多終端環境下,新的劃分方式如下:
-
View消亡了,PC端可以回歸原始的html頁面。
-
Model分離成兩層,一層負責數據實體,另一層負責數據的訪問。
-
Controller分離成兩層,一層負責綁定路由,另一層負責業務邏輯。
以上是我個人對mvc的看法,大家可以討論或給出更好的方案。
總結
以上是生活随笔為你收集整理的为什么我不再推荐使用 MVC 框架?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图文并茂,万字详解,带你掌握 JVM 垃
- 下一篇: 7 种 JVM 垃圾收集器,看完我跪了。