1. MVC 的三个对象
M:model(模型),封装数据操作。
我们可以将对数据的增删改查操作封装到一起。
let Model={
data(){数据源},
create(){增加数据},
delete(){删除数据},
update(){修改数据},
get(){获取数据}
}
V:view(视图),视图渲染。
它描绘的是model的当前状态。
let View={
html:'html代码'
init(){初始化},
render(){重新渲染页面}
}
C:controller(控制器), M 和 V 之外剩余的事情都可以交给 C 来做。
let Controller={
init(){
v.init() // 初始化View
v.render() // 第一次渲染页面
c.autoBindEvents() // 自动的事件绑定
eventBus.on('m:update',()=>{v.render()} // 当enentsBus触发'm:update'时View刷新
},
events:{事件以哈希表的方式记录存储},
method(){
m.update()
},
autoBindEvents(){自动绑定事件}
}
2. 什么是 eventBus
eventBus 又称为事件总线,可以用来进行组件之间的监听和通信,所以我们可以通过 eventBus 来实现 M、V、C 间的通信。
eventBus 有三个常用的API:
eventBus.on()用于监听对象。eventBus.trigger()用于触发对象。eventBus.off()用于取消对象监听。 例如我们可以使用 eventBus 实现 M 的数据发生变化后 V 可以自动更新。
const eventBus = $(window) // 获取eventBus 对象
const m = {
data: {
...
},
update(data) {
eventBus.trigger('m:updated') // trigger 触发事件更新数据
}
}
const v = {
render(data) {
... // 更新数据
}
}
const c = {
eventBus.on('m:updated', () => { // on 方法执行监听后触发 v 的视图更新
v.render(m.data.n)
})
}
3. 表驱动编程
表驱动编程就是把大批类似但不重复的代码中的重要数据抽取出来,组成 哈希表 ,利用表进行编程。
4. 我对模块化编程的理解
将一个复杂的系统按照逻辑分成若干个模块,每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。
- 各模块之间互不影响,结构清晰,减少重复代码。
- 其他人不需要理解代码是如何实现的,只需要使用暴露出的接口来访问这个组件就可以。