mvvm、mvc 和mvp是一種架構(gòu)模式镣典,為了解決圖形界面應(yīng)用程序復(fù)雜性管理問(wèn)題而產(chǎn)生的應(yīng)用架構(gòu)模式纱意。
發(fā)展歷程:
mvc→mvp→mvvm
mvc模式:
view層:視圖層洽洁;
model層:程序需要操作的數(shù)據(jù)和信息;
controller層:接受view層傳來(lái)的數(shù)據(jù)订晌,選擇model層的數(shù)據(jù)虏辫,進(jìn)行操作;
從圖可以看出mvvm是單向的通信锈拨,用戶(hù)看view層砌庄,view給controller層信息,controller給model傳遞信息奕枢,model給view傳遞數(shù)據(jù)娄昆,view層呈現(xiàn)的用戶(hù),因此view和model還是存在耦合缝彬。
mvp模式:
mvp模式是由mvc模式進(jìn)化來(lái)的萌焰,即view層、model模式谷浅、presenter層扒俯,他們的關(guān)系為:
可以看出在mvp模式中view和model層已經(jīng)沒(méi)有了耦合,他們之間的通信只能通過(guò)presenter層來(lái)傳遞壳贪,而且他們是雙向的陵珍;
mvvm模式:
mvvm模式是由mvp模式進(jìn)化來(lái)的,他們兩個(gè)模式之間基本相同违施,只是將p變成了vm互纯,即presenter變成了viewmodel層;他們的關(guān)系為:
mvvm中的數(shù)據(jù)可以實(shí)現(xiàn)雙向綁定磕蒲;即View層數(shù)據(jù)變化則ViewModel中的數(shù)據(jù)也隨之變化留潦,反之ViewModel中的數(shù)據(jù)變化只盹,則View層數(shù)據(jù)也隨之變化;MVVM的好處就是數(shù)據(jù)驅(qū)動(dòng)兔院,數(shù)據(jù)變殖卑,則頁(yè)面變,這樣就能用簡(jiǎn)單的代碼坊萝,實(shí)現(xiàn)比較復(fù)雜的邏輯操作孵稽;因此MVVM框架比較適合邏輯復(fù)雜的前端項(xiàng)目