日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

谈谈我对MVC的View层实现的理解

發(fā)布時(shí)間:2023/12/9 c/c++ 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谈谈我对MVC的View层实现的理解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

談?wù)勎覍?duì)MVC的View層實(shí)現(xiàn)的理解

MVC框架可以把應(yīng)用清晰明了地分為三個(gè)部分:Model層–數(shù)據(jù)層,View層–視圖層,Controller–邏輯層,Model層負(fù)責(zé)整合數(shù)據(jù),View層負(fù)責(zé)頁(yè)面渲染,Controller層負(fù)責(zé)實(shí)現(xiàn)業(yè)務(wù)邏輯。

我在這里簡(jiǎn)單說(shuō)一下我對(duì)MVC框架中的View層的理解。

View層一般包含兩個(gè)部分:View類和模版文件,View類并不是必需的,采用View類可以整合代碼,因?yàn)橛袝r(shí)候View層也會(huì)有一些復(fù)雜的邏輯和數(shù)據(jù)讀取的操作,這些操作最好放在類(或者對(duì)象)中實(shí)現(xiàn),如果直接在模版文件中實(shí)現(xiàn),會(huì)讓模版文件很凌亂,不利于代碼復(fù)用和后期維護(hù)。

對(duì)于一個(gè)Web應(yīng)用來(lái)說(shuō),整個(gè)應(yīng)用的風(fēng)格和頁(yè)面布局需要保持一致,那么聰明的小伙伴是否聯(lián)想到了代碼復(fù)用?假如這個(gè)應(yīng)用一共有200個(gè)頁(yè)面,如何實(shí)現(xiàn)“只需在代碼中修改一處,就可以修改所有頁(yè)面的共用部分?”,這是一個(gè)非常重要的功能,要不然頁(yè)面上每一個(gè)小改動(dòng)都需要重復(fù)200次,其中難免出錯(cuò),維護(hù)代價(jià)高昂。

代碼復(fù)用的基本思想是“模塊化”,每個(gè)模塊只負(fù)責(zé)一小部分功能,整個(gè)應(yīng)用的功能就是這些模塊的排列和組合,這個(gè)思想運(yùn)用在View層就可以實(shí)現(xiàn)上面提到的問(wèn)題。

那么如何將“模塊化”的思想運(yùn)用在View層的實(shí)現(xiàn)上呢?

首先,需要分析web應(yīng)用頁(yè)面渲染的特點(diǎn)。一般的,大部分頁(yè)面共用一個(gè)基本布局(基本布局之外沒(méi)有web內(nèi)容),在基本布局里面進(jìn)行劃分,比如劃分為上下布局,左右布局等,然后再在劃分好的小塊中再進(jìn)行布局劃分,以此類推,直到完成一個(gè)頁(yè)面的布局。因?yàn)橐粋€(gè)Web應(yīng)用的風(fēng)格和大體布局是一致的,所以上面劃分出來(lái)的布局中,一部分布局是可以共用的。每一次劃分所產(chǎn)生的塊都是“模塊”,這些“模塊”都可以復(fù)用,頁(yè)面與頁(yè)面之間共用的塊,可以通過(guò)調(diào)用相同的“模塊”來(lái)實(shí)現(xiàn),需要修改的時(shí)候,只需修改“模塊”即可,這樣就可以達(dá)到“只需在代碼中修改一處,就可以修改所有頁(yè)面的共用部分”。

那么如何劃分布局呢?(如何把我腦海中對(duì)頁(yè)面布局的劃分告訴Web應(yīng)用?)

我的兩種方案:

1. 在每個(gè)模塊中實(shí)現(xiàn)對(duì)它所包含的子模塊的調(diào)用。這樣,只需要“手動(dòng)”調(diào)取出第一個(gè)模塊,就可以調(diào)取出所有它的子模塊,從而完成整個(gè)頁(yè)面的渲染。這個(gè)方法的缺點(diǎn)是“環(huán)環(huán)相扣”并且沒(méi)法快速查看,如果某個(gè)模塊渲染不正確,只能一級(jí)一級(jí)地往上追溯。“環(huán)環(huán)相扣”導(dǎo)致模塊與模塊之間的關(guān)系非常緊密,有悖于“模塊化”的思想。

2. 為每一個(gè)頁(yè)面單獨(dú)設(shè)置一個(gè)布局的.xml文件,在這個(gè)文件中,規(guī)定好頁(yè)面的布局劃分,哪個(gè)模塊包含哪些子模塊就一目了然,便于快速定位問(wèn)題。缺點(diǎn)是.xml文件的解析難度很大,解析.xml文件也非常吃性能,如果頁(yè)面布局復(fù)雜,維護(hù).xml也會(huì)非常麻煩。

我比較偏向于第2個(gè)方案,第1個(gè)方案還有一個(gè)非常致命的缺點(diǎn):頁(yè)面的渲染過(guò)程是逐級(jí)展開(kāi)的,需要在關(guān)鍵節(jié)點(diǎn)進(jìn)行“干預(yù)”,使上級(jí)模塊調(diào)取合適的子模塊,這也是一個(gè)難點(diǎn),如果需要干預(yù)的點(diǎn)太多,就會(huì)非常麻煩并且非常凌亂。相比之下,方案2只需要維護(hù).xml文件,只要編寫(xiě)一個(gè)完善的解析函數(shù),就可以很好的工作,如果解析.xml文件對(duì)性能造成較大影響,可以把解析.xml后所得的布局對(duì)象或者數(shù)據(jù)結(jié)構(gòu)保存在NoSQL數(shù)據(jù)庫(kù)中作為緩存(畢竟頁(yè)面布局不會(huì)修改的很頻繁),這樣可在一定程度上減輕解析.xml文件對(duì)性能的影響。

再進(jìn)一步

有沒(méi)有發(fā)現(xiàn),上述的第2方案,“為每一個(gè)頁(yè)面單獨(dú)設(shè)置一個(gè)布局的.xml文件”會(huì)導(dǎo)致眾多.xml文件中都會(huì)包含大量的重復(fù)代碼,因?yàn)榇蟛糠猪?yè)面的布局有很多位置是相同的或相近似的,所以可以對(duì).xml文件作一些優(yōu)化,把.xml文件中重復(fù)的部分分離出來(lái),單獨(dú)維護(hù),這樣.xml文件的內(nèi)容就會(huì)清爽很多。

如果您覺(jué)得閱讀本文對(duì)您有幫助,歡迎轉(zhuǎn)載本文,但是轉(zhuǎn)載文章之后必須在文章頁(yè)面明顯位置保留此段聲明,否則保留追究法律責(zé)任的權(quán)利。

轉(zhuǎn)載于:https://www.cnblogs.com/zhanghaiyang/p/7212831.html

總結(jié)

以上是生活随笔為你收集整理的谈谈我对MVC的View层实现的理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。