第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

vue.js和MVVM

vue.js和MVVM

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

2 回答

?
慕村9548890

TA貢獻(xiàn)1884條經(jīng)驗 獲得超4個贊

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

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

可以看出,其實MVC模式中,各層之間是有耦合的,我們可能都聽過在框架設(shè)計或者編寫代碼的時候有聽過這樣一句話“低耦合、高內(nèi)聚”,其中低耦合就是為了就低各層之間的耦合度,使得每一層復(fù)雜的功能更加的明確,而MVC模式的一個問題所在就是可能會產(chǎn)生高耦合,設(shè)計模式中的有說過“關(guān)閉原則”,也就是說對修改關(guān)閉,對擴(kuò)展開放。而高耦合則就違背了這一原則,可能導(dǎo)致你在修改某一層的代碼的時候,其他層的代碼也需要進(jìn)行修改,這樣會造成后期整個項目的維護(hù)和擴(kuò)展帶來很大的麻煩,這時候就出現(xiàn)了MVP、MVVM等的模式,都是由MVC模式進(jìn)行演變而來的。那么我們知道VueJs是基于MVVM模式的,MVVM(Model、View VM),也就是模型層,視圖層,VM(相當(dāng)于Controller層)。這時候模型層與視圖層之間的聯(lián)系是通過VM層來建立的。舉個例子,從后臺獲取商品數(shù)據(jù)變進(jìn)行展示。那么我們在Vue實例的data屬性中定義的如:

data(){  
  return{  
        goods:[]
    }}

就相當(dāng)于Model層,View層就很好理解了,也就是我們的界面了。在從后臺獲取商品數(shù)據(jù),比如:

getGoodsInfo(){
    axios.get("/api/goods").then((res)=>{   
         this.goods = res.goods; 
    },(err)=>{
    
    })
}

上面的代碼就相當(dāng)于VM層,對goods進(jìn)行了賦值處理,咱們通過Vue中的語法,通過v-for將商品數(shù)據(jù)在界面上進(jìn)行了展示。

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


查看完整回答
反對 回復(fù) 2018-10-26
  • 2 回答
  • 0 關(guān)注
  • 1311 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號