JavaScript中的MVC
MVC模式(Model–view–controller)是一種設(shè)計(jì)模式(或者軟件架構(gòu)),把系統(tǒng)分為三個(gè)基本部分:模型(Model)观话、視圖(View)和控制器(Controller)。
1.Model 數(shù)據(jù)管理,主要負(fù)責(zé)和服務(wù)器進(jìn)行交互秧秉。將請(qǐng)求到的數(shù)據(jù)傳給Controller。
2.View 負(fù)責(zé)用戶界面衰抑,HTML 渲染象迎。
3.Controller 負(fù)責(zé)監(jiān)聽并處理View 的事件,更新和調(diào)用 Model呛踊;也負(fù)責(zé)監(jiān)聽 Model的變化(Model從服務(wù)器獲得數(shù)據(jù))砾淌,并更新 View。Controller 控制其他所有流程谭网。
畫圖來理解:
Model 和服務(wù)器交互汪厨,Model 將得到的數(shù)據(jù)交給 Controller,Controller 把數(shù)據(jù)填入 View愉择,并監(jiān)聽 View
用戶操作 View劫乱,如點(diǎn)擊按鈕,Controller 就會(huì)接受到點(diǎn)擊事件锥涕,Controller 這時(shí)會(huì)去調(diào)用 Model衷戈,Model 會(huì)與服務(wù)器交互,得到數(shù)據(jù)后返回給 Controller层坠,Controller 得到數(shù)據(jù)就去更新 View
MVC模式的優(yōu)點(diǎn)
就我的理解來說脱惰,MVC模式有這些好處:
1.低耦合性。每層各司其職窿春,比如只需要改變視圖層而不需要重新編譯模型和控制器代碼,改代 碼不用在各個(gè)部分改采盒,只需要改變某部分的代碼旧乞。
2.方便維護(hù)和修改。視圖層磅氨、數(shù)據(jù)層和業(yè)務(wù)邏輯層分開尺栖,結(jié)構(gòu)清晰好理解。
3.大大提高代碼的可重用性烦租。比如用不同的視圖層訪問模型的數(shù)據(jù)延赌,只要在控制器層對(duì)數(shù)據(jù)格式做處理除盏,而不需要修改模型層的代碼。
重要屬性和方法
舉例說明 MVC 三個(gè)對(duì)象分別有哪些重要屬性和方法:
var model = {
data: null,
init(){}
fetch(){}
save(){}
update(){}
delete(){}
}
view = {
init() {}
template: '<h1>hi</h1'>
}
controller = {
view: null,
model: null,
init(view, model){
this.view = view
this.model = model
this.bindEvents()
}
render(){
this.view.querySelector('name').innerText = this.model.data.name
},
bindEvents(){}
}