摘要:本周學(xué)習(xí)方面主要在學(xué)。作為一名前端,一直對心存畏忌。管理自己的生命周期處理之間的跳轉(zhuǎn)實現(xiàn)容器。所以秘書就是了,并且現(xiàn)在只需要直接持有而不需要再持有了。那么我們中的持有關(guān)系就是持有,持有。下周會專門針對學(xué)習(xí)出一篇博客。
本周學(xué)習(xí)方面主要在學(xué)spring boot。作為一名前端,一直對java心存畏忌。但是好多的工作又桎梏于此。正好趁著這次小程序開發(fā),我為我們組前端的小伙伴爭取到了可以一起開發(fā)后臺的機會。所以本周趕緊學(xué)起來。java,沒什么可怕的~~~
(1)mvc和mvvm的區(qū)別參考文章:https://www.jianshu.com/p/b0a...
MVC的思想:一句話描述就是Controller負(fù)責(zé)將Model的數(shù)據(jù)用View顯示出來,換句話說就是在Controller里面把Model的數(shù)據(jù)賦值給View,比如在controller中寫self.label.text = self.data[@”title”],只是還沒有刻意建一個Model類出來而已。
這張圖把MVC分為三個獨立的區(qū)域,并且中間用了一些線來隔開。很有意思的設(shè)計,因為這些線似乎出現(xiàn)在了駕??颇恳坏膬?nèi)容中,你瞧C和V以及C和M之間的白線,一部分是虛線一部分是實線對吧,這就表明了引用關(guān)系:C可以直接引用V和M,而V和M不能直接引用C,至少你不能顯式的在V和M的代碼中去寫和C相關(guān)的任何代碼,而V和M之間則是雙黃線,沒錯,它們倆誰也不能引用誰,你既不能在M里面寫V,也不能在V里面寫M。哦,上面的描述有點小小的問題,你不是“不能”這樣寫,而是“不應(yīng)該”這樣寫,沒人能阻止你在寫代碼的時候在一個M里面去寫V,但是一旦你這樣做了,那么你就違背了MVC的規(guī)范,你就不是在使用MVC了,所以這算是MVC的一個必要條件:使用MVC –> M里面沒有V的代碼。所以M里面沒有V的代碼就是使用MVC的必要條件。
MVVM的誕生
就像我們之前分析MVC是如何合理分配工作的一樣,我們需要數(shù)據(jù)所以有了M,我們需要界面所以有了V,而我們需要找一個地方把M賦值給V來顯示,所以有了C,然而我們忽略了一個很重要的操作:數(shù)據(jù)解析。在MVC出生的年代,手機APP的數(shù)據(jù)往往都比較簡單,沒有現(xiàn)在那么復(fù)雜,所以那時的數(shù)據(jù)解析很可能一步就解決了,所以既然有這樣一個問題要處理,而面向?qū)ο蟮乃枷刖褪怯妙惡蛯ο髞斫鉀Q問題,顯然V和M早就被定義死了,它們都不應(yīng)該處理“解析數(shù)據(jù)”的問題,理所應(yīng)當(dāng)?shù)模敖馕鰯?shù)據(jù)”這個問題就交給C來完成了。而現(xiàn)在的手機App功能越來越復(fù)雜,數(shù)據(jù)結(jié)構(gòu)也越來越復(fù)雜,所以數(shù)據(jù)解析也就沒那么簡單了。如果我們繼續(xù)按照MVC的設(shè)計思路,將數(shù)據(jù)解析的部分放到了Controller里面,那么Controller就將變得相當(dāng)臃腫。還有相當(dāng)重要的一點:Controller被設(shè)計出來并不是處理數(shù)據(jù)解析的。1、管理自己的生命周期;2、處理Controller之間的跳轉(zhuǎn);3、實現(xiàn)Controller容器。這里面根本沒有“數(shù)據(jù)解析”這一項,所以顯然,數(shù)據(jù)解析也不應(yīng)該由Controller來完成。那么我們的MVC中,M、V、C都不應(yīng)該處理數(shù)據(jù)解析,那么由誰來呢?這個問題實際上在面向?qū)ο蟮臅r候相當(dāng)好回答:既然目前沒有類能夠處理這個問題,那么就創(chuàng)建一個新的類出來解決不就好了?所以我們聰明的開發(fā)者們就專門為數(shù)據(jù)解析創(chuàng)建出了一個新的類:ViewModel。這就是MVVM的誕生。
在MVVM中,Controller不再像MVC那樣直接持有Model了。想象Controller是一個Boss,數(shù)據(jù)是一堆文件(Model),如果現(xiàn)在是MVC,那么數(shù)據(jù)解析(比如整理文件)需要由Boss親自完成,然而實際上Boss需要的僅僅是整理好的文件而不是那一堆亂七八糟的整理前的文件。所以Boss招聘了一個秘書,現(xiàn)在Boss就不再需要管理原始數(shù)據(jù)(整理之前的文件)了,他只需要去找秘書:你幫我把文件整理好后給我。那么這個秘書就首先去拿到文件(原始數(shù)據(jù)),然后進行整理(數(shù)據(jù)解析),接下來把整理的結(jié)果給Boss。所以秘書就是VM了,并且Controller(Boss)現(xiàn)在只需要直接持有VM而不需要再持有M了。如果再進一步理解C、VM、M之間的關(guān)系:因為Controller只需要數(shù)據(jù)解析的結(jié)果而不關(guān)心過程,所以就相當(dāng)于VM把“如何解析Model”給封裝起來了,C甚至根本就不需要知道M的存在就能把工作做好,前提它需要持有一個VM。那么我們MVVM中的持有關(guān)系就是:C持有VM,VM持有M。
form表單中的enctype屬性,規(guī)定了在發(fā)送服務(wù)器前,如何對表單數(shù)據(jù)進行編碼
提交文件的form表單代碼如下:
為了springboot學(xué)習(xí),在gitchat上買了個課程:https://gitbook.cn/gitchat/co...
正在學(xué)習(xí)中。下周會專門針對spring boot學(xué)習(xí)出一篇博客。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/109974.html
閱讀 2844·2021-11-19 11:35
閱讀 2591·2021-11-02 14:40
閱讀 1412·2021-09-04 16:48
閱讀 3019·2019-08-30 15:55
閱讀 1773·2019-08-30 13:11
閱讀 1965·2019-08-29 11:12
閱讀 1101·2019-08-27 10:52
閱讀 3169·2019-08-26 18:36