1.1MVX模式是什么
MVC框架最早出現(xiàn)在Java領(lǐng)域,然后慢慢在前端開發(fā)中也被提到枣宫,后來(lái)又出現(xiàn)了MVP婆誓,以及現(xiàn)在最成熟的MVVM,下面我們來(lái)簡(jiǎn)單介紹一下各種模式也颤。
1.1.1MVC
MVC
全名是Model View Controller
洋幻,是模型(model)-視圖(view)-控制器(controller)
的縮寫,一種軟件設(shè)計(jì)典范翅娶,用一種業(yè)務(wù)邏輯文留、數(shù)據(jù)、界面顯示分離的方法組織代碼竭沫,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面燥翅,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯蜕提。
Model(模型)
是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分森书。
View(視圖)
是應(yīng)用程序中處理數(shù)據(jù)顯示的部分。
Controller(控制器)
是應(yīng)用程序中處理用戶交互的部分谎势。
通持袈龋控制器負(fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶輸入它浅,并向模型發(fā)送數(shù)據(jù)。
優(yōu)點(diǎn):耦合性低镣煮、重用性高姐霍、生命周期成本低、部署快典唇、可維護(hù)性高镊折、有利軟件工程化管理
缺點(diǎn):由于模型和視圖要嚴(yán)格的分離,這樣也給調(diào)試應(yīng)用程序帶來(lái)了一定的困難介衔。每個(gè)構(gòu)件在使用之前都需要經(jīng)過(guò)徹底的測(cè)試恨胚。
對(duì)于小項(xiàng)目,MVC反而會(huì)帶來(lái)更大的工作量以及復(fù)雜性炎咖。
接受用戶指令時(shí)赃泡,MVC 可以分成兩種方式寒波。一種是通過(guò) View 接受指令,傳遞給 Controller升熊。
那么用戶操作應(yīng)該放在什么位置MVC之間又有什么變化俄烁?
用戶(user)通過(guò)Controller來(lái)操作Model 以達(dá)到view的變化
1.1.2MVP
MVP
是單詞Model View Presenter
的首字母的縮寫,分別表示數(shù)據(jù)層级野、視圖層页屠、發(fā)布層
,它是MVC架構(gòu)的一種演變蓖柔。作為一種新的模式辰企,MVP
與MVC
有著一個(gè)重大的區(qū)別:在MVP中View并不直接使用Model,它們之間的通信是通過(guò)Presenter (MVC中的Controller)來(lái)進(jìn)行的况鸣,所有的交互都發(fā)生在Presenter內(nèi)部牢贸,而在MVC中View會(huì)直接從Model中讀取數(shù)據(jù)而不是通過(guò) Controller
MVP
模式將Controller
改名為Presenter
,同時(shí)改變了通信方向懒闷。
即:
View <------> Presenter <------> Model
各部分之間的通信十减,都是雙向的。
View
與Model
不發(fā)生聯(lián)系愤估,都通過(guò) Presenter 傳遞
帮辟。
View 非常薄,不部署任何業(yè)務(wù)邏輯玩焰,稱為”被動(dòng)視圖”(Passive View)
由驹,即沒(méi)有任何主動(dòng)性,而 Presenter
非常厚昔园,所有邏輯都部署在那里蔓榄。
1.1.3MVVM
MVVM(Model View ViewModel)是一種基于MVC的設(shè)計(jì)
View
一般就是我們平常說(shuō)的HTML文本的Js模板,里面可以嵌入一些js模板的代碼
比如:Mustache默刚,比如jstl類似的模板偽代碼
ViewModule
層里面就是我們對(duì)于這個(gè)視圖區(qū)域的一切js可視業(yè)務(wù)邏輯
比如:特效甥郑,比如表單按鈕點(diǎn)擊提交,這些自定義事件的注冊(cè)和處理邏輯都寫在ViewModule里面了
Module
就更簡(jiǎn)單了荤西,就是對(duì)于純數(shù)據(jù)的處理
比如增刪改查澜搅,與后臺(tái)數(shù)據(jù)接口做交互
相比前兩種模式,MVVM
只是把MVC的Controller
和MVP的Presenter
改成了ViewModel
邪锌。
View變化會(huì)自動(dòng)更新到ViewModel勉躺,ViewModel的變化也會(huì)自動(dòng)更新到View上顯示(雙向綁定原理)