1. MVC 三个对象分别做什么,给出伪代码示例
M: Model(数据模型)负责操作所有数据
```
const m = {
data: {},
create() { },
delete() { },
update() { },
get() { }
}
```
V: View(视图)负责所有UI界面
```
const v = {
el: null,
html: `代码`,
init(container) {
v.el = $(container)
},
render(n) { }
}
```
C: Controller(控制器), 负责除了M和V的事情的其他事情
```
const c = {
init(container) { },
events: { },
add() { },
minus() { },
mul() { },
div() { },
autoBindEvents() { }
}
```
2. EventBus 有哪些 API,是做什么用的,给出伪代码示例
EventBus可以称作观察者设计模式,在Android下可以高效的发布/订阅事件。作用是可以代替传统Intent,Handler,Broadcast或接口函数在Fragment,Activity,Service,线程之间传递数据,执行方法。解决模块之间通信的问题,view组件层面,父子组件、兄弟组件通信都可以使用Eventbus处理。特点就是代码简洁。
DOM 的事件机制就是发布订阅模式最常见的实现,这大概是前端最常用的编程模型了,监听某事件,当该事件发生时,监听该事件的监听函数被调用。EventBus就是实现发布订阅模式的一种方法。
EventBus 基本的 API 有 on (监听事件), trigger (触发事件), off (取消监听)方法。
```
{
constructor(){
this._eventBus =$(window)
}
on(eventName, fn){
return this._eventBus.on(eventName,fn)
}
trigger(eventName,data){
return this._trigger.tiggger(eventName,data)
}
off(eventName, fn){
return this._eventBus.off(eventName,fn)
}
}
export default EventBus
```
3.什么是表驱动编程
表驱动法是一种编程模式(scheme)——从表里面查找信息而不使用逻辑语句(if和case)。事实上,凡是能通过逻辑语句来选择的事物,都可以通过查表来选择。对简单的情况而言,使用逻辑语句更为容易和直白。但随着逻辑链的越来越发杂,查表法也就愈发显得更具吸引力。简单来说就是减少重复代码
```
bindEvents(){
v.el.on('click','#add1',()=>{
m.data.n +=1
v.render(m.data.n)
})
v.el.on('click','#minus1',()=>{
m.data.n-=1
v.render(m.data.n)
})
v.el.on('click','#mul2',()=>{
m.data.n*=2
v.render(m.data.n)
})
v.el.on('click','#divide2',()=>{
m.data.n/=2
v.render(m.data.n)
})
}
```
表驱动编程改写为:
```
events:{
'click #aa1':'add',
'click #minus1':'minus',
'click #mul2':'mul',
'click #divide2':'div'
},
add(){
m.update( data: {n:m.data.n +1})
},
minus(){
m.update( data:{n:m.data.n -1})
},
mul(){
m.update( data: {n:m.data.n *2})
},
div(){
m.update(data: {n:m.data.n /2})
}
```
4. 如何理解模块化的
模块化(modular)编程,是强调将计算机程序的功能分离成独立的、可相互改变的“模块”(module)的软件设计技术,它使得每个模块都包含着执行预期功能的一个唯一方面(aspect)所必需的所有东西。
在一个完整的页面应用中,不同的节点功能,不同的结构可以规划为多个模块,每个模块的实现的方式以及用到的技术大不相同,使用模块化编程可以减小各个模块之间的影响和联系,可以更方便的优化代码和重构代码,提高我们代码的重用性,便于后期维护。
模块化的好处:避免变量污染,命名冲突;提高代码复用率;提高维护性;依赖关系的管理