MVC的三个对象
M-model(数据模型)负责操作的所有数据
V-view (试图)负责所有UI的界面
C -controller(控制器)负责其他
EventsBus API
eventBus对象间通信
const eventBus = $(window)
update(data){
Object.assign(m.data,data)
eventBus.trigger('m updated')
}
当调用了update方法之后,我们用eventBus.on('m updated',()=>{render(m.data.n)})监听
表驱动编程
表驱动编程的意义在于逻辑与数据的分离
表驱动方法是一种使你可以在表中查找信息,而不必用逻辑语句(if或else)来把他们找出来的方法,事实上,任何信息都可以通过表来挑选。在简单的情况下,逻辑语句往往更简单而且更直接,但随着逻辑链的复杂,表就变得越来越有吸引力了
const c = {
events: {
'click #add1':'add',
'click #minus1': 'minus1',
'click #mul2': 'mul2',
'click #divide2':'div'
},
add() {
m.data.n += 1;
},
minus() {
m.data.n -= 1;
},
mul() {
m.data.n*=2
},
div() {
m.data.n /= 2
},
autoBindEvens() {
for (let key in c.events) {
const value = c[c.events[key]]
const spaceIndex = key.indexOf(' ')
const part1 = key.slice(0,spaceIndex)
const part2 = key.slice(spaceIndex + 1)
v.el.on(part1,part2,value)
}
}
}
我是如何理解模块化的
利用最下知识原则,整个项目下的不同模块互补相干,只做好自己的事,极大程度上简约了各个模块上的共同代码