一、MVC 三個(gè)對象分別做什么
MVC就是:model(模型)、view(視圖)、controller(控制器)的合并稱呼。
M:主要是用于負(fù)責(zé)數(shù)據(jù)相關(guān)的任務(wù)。
V:負(fù)責(zé)用戶界面
C:負(fù)責(zé)監(jiān)聽用戶事件,然后調(diào)用 M 和 V 更新數(shù)據(jù)和視圖
示例:
const m = {
data:null,
create(){ 增加 },
delete(){ 刪除 },
get(){ 獲得 },
update(){ 修改 }
};
const v = {
el:頁面元素
html:{ 顯示頁面的內(nèi)容 },
init(){v.el ... 元素初始化},
render(){ 重新渲染 }
};
const c = {
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(){}
}
二、EventBus 有哪些 API,是做什么用的?
eventBus 主要用于簡化對象間的通信。 使用 eventBus 可以滿足最小知識(shí)原則,讓作用的組件即使互相不知道對方的細(xì)節(jié),但是卻可以調(diào)用對方的功能。
我們常使用到的API:
//on(監(jiān)聽)
const eventBus = $(window)
evnetBus.on("監(jiān)聽事件",() => {})
//trigger(觸發(fā)事件)
const eventBus = $(window)
eventBus.trigger("事件")
//off(取消監(jiān)聽)
const eventBus = $(window)
eventBus.off("監(jiān)聽事件")
三、表驅(qū)動(dòng)編程是做什么的
表驅(qū)動(dòng)是一種在編程中的方法,讓我們可以從哈希表里查找信息而不使用邏輯語句來進(jìn)行查找,因?yàn)樵谶壿嫼唵螘r(shí),使用邏輯語句既簡單又代碼量又小,但是一旦邏輯復(fù)雜起來,邏輯語句就會(huì)導(dǎo)致代碼冗長,此時(shí)我們就可以使用表驅(qū)動(dòng)編程。
在MVC優(yōu)化代碼過程中,我們提取出了一個(gè)“哈希表”(events);我們只留下了需要的、不能再簡略的東西:doSomething。
例如:
const controller = {
init() {
...
//我們將之稱為自動(dòng)綁定事件
controller.autoBindEvents()
},
//事件
events: {
'click #a1': 'method_1',
'click #a1': 'method_1',
...
'click #a1': 'method_n'
},
autoBindEvents() {
//實(shí)現(xiàn)過程,比如遍歷
for (let key in controller.events)
//比如將包含'事件 選擇器'的字符串分為幾個(gè)部分,放到不同的變量中
},
method_1() {
doSomething_a1
},
method_2() {
doSomething_a2
},
...
method_n() {
doSomething_an
}
}
四、我是如何理解模塊化的
模塊化的本質(zhì)其實(shí)就是幫助我們優(yōu)化代碼而產(chǎn)生的,像是一種歸納的方法,將原本零散的節(jié)點(diǎn),結(jié)構(gòu)分成不同模塊,這些模塊不僅相互獨(dú)立、互不影響,又可以重復(fù)使用。借此來降低代碼耦合度,減少重復(fù)代碼,讓代碼結(jié)構(gòu)更加清晰整潔,便于維護(hù)。