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