亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

vue.js和MVVM

vue.js和MVVM

慕神8447489 2018-10-10 21:31:05
在創建一個Vue實例時,傳遞給Vue構造函數的選項對象,是否就是MVVM中的model,而創建的Vue實例,就是viewModel?
查看完整描述

2 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

首先題主需要了解MVVM模式是什么,是有MVC模式演變過來的,MVC模式是什么勒?Model(模型層)、View(視圖層)、Controller(控制器),每一層都有自己的功能,比如模型層用來進行實體類的初始化,視圖層用來進行數據的展示,控制器用來處理邏輯。那為什么有了MVC模式,還需要MVVM模式勒?先來一張圖看看MVC各層之間的關系:

https://img1.sycdn.imooc.com//5bd2ca520001da5d06700478.jpg

可以看出,其實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將商品數據在界面上進行了展示。

先寫到這里吧,先去吃個飯。


查看完整回答
反對 回復 2018-10-26
  • 2 回答
  • 0 關注
  • 1315 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號