一、MVC 三个对象分别做什么
MVC就是:model(模型)、view(视图)、controller(控制器)的合并称呼。
M:主要是用于负责数据相关的任务。
V:负责用户界面
C:负责监听用户事件,然后调用 M 和 V 更新数据和视图
示例:
const m = {
data:null,
create(){ 增加 },
delete(){ 删除 },
get(){ 获得 },
update(){ 修改 }
};
const v = {
el:页面元素
html:{ 显示页面的内容 },
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 可以满足最小知识原则,让作用的组件即使互相不知道对方的细节,但是却可以调用对方的功能。
我们常使用到的API:
//on(监听)
const eventBus = $(window)
evnetBus.on("监听事件",() => {})
//trigger(触发事件)
const eventBus = $(window)
eventBus.trigger("事件")
//off(取消监听)
const eventBus = $(window)
eventBus.off("监听事件")
三、表驱动编程是做什么的
表驱动是一种在编程中的方法,让我们可以从哈希表里查找信息而不使用逻辑语句来进行查找,因为在逻辑简单时,使用逻辑语句既简单又代码量又小,但是一旦逻辑复杂起来,逻辑语句就会导致代码冗长,此时我们就可以使用表驱动编程。
在MVC优化代码过程中,我们提取出了一个“哈希表”(events);我们只留下了需要的、不能再简略的东西:doSomething。
例如:
const controller = {
init() {
...
//我们将之称为自动绑定事件
controller.autoBindEvents()
},
//事件
events: {
'click #a1': 'method_1',
'click #a1': 'method_1',
...
'click #a1': 'method_n'
},
autoBindEvents() {
//实现过程,比如遍历
for (let key in controller.events)
//比如将包含'事件 选择器'的字符串分为几个部分,放到不同的变量中
},
method_1() {
doSomething_a1
},
method_2() {
doSomething_a2
},
...
method_n() {
doSomething_an
}
}
四、我是如何理解模块化的
模块化的本质其实就是帮助我们优化代码而产生的,像是一种归纳的方法,将原本零散的节点,结构分成不同模块,这些模块不仅相互独立、互不影响,又可以重复使用。借此来降低代码耦合度,减少重复代码,让代码结构更加清晰整洁,便于维护。
网友评论