2 回答

TA貢獻1884條經驗 獲得超4個贊
首先題主需要了解MVVM模式是什么,是有MVC模式演變過來的,MVC模式是什么勒?Model(模型層)、View(視圖層)、Controller(控制器),每一層都有自己的功能,比如模型層用來進行實體類的初始化,視圖層用來進行數據的展示,控制器用來處理邏輯。那為什么有了MVC模式,還需要MVVM模式勒?先來一張圖看看MVC各層之間的關系:
可以看出,其實MVC模式中,各層之間是有耦合的,我們可能都聽過在框架設計或者編寫代碼的時候有聽過這樣一句話“低耦合、高內聚”,其中低耦合就是為了就低各層之間的耦合度,使得每一層復雜的功能更加的明確,而MVC模式的一個問題所在就是可能會產生高耦合,設計模式中的有說過“關閉原則”,也就是說對修改關閉,對擴展開放。而高耦合則就違背了這一原則,可能導致你在修改某一層的代碼的時候,其他層的代碼也需要進行修改,這樣會造成后期整個項目的維護和擴展帶來很大的麻煩,這時候就出現了MVP、MVVM等的模式,都是由MVC模式進行演變而來的。那么我們知道VueJs是基于MVVM模式的,MVVM(Model、View VM),也就是模型層,視圖層,VM(相當于Controller層)。這時候模型層與視圖層之間的聯系是通過VM層來建立的。舉個例子,從后臺獲取商品數據變進行展示。那么我們在Vue實例的data屬性中定義的如:
data(){ return{ goods:[] }}
就相當于Model層,View層就很好理解了,也就是我們的界面了。在從后臺獲取商品數據,比如:
getGoodsInfo(){ axios.get("/api/goods").then((res)=>{ this.goods = res.goods; },(err)=>{ }) }
上面的代碼就相當于VM層,對goods進行了賦值處理,咱們通過Vue中的語法,通過v-for將商品數據在界面上進行了展示。
先寫到這里吧,先去吃個飯。
添加回答
舉報