MVC 是什么,三个对象分别做什么
- MVC是一种架构设计模式,它通过关注点分离鼓励改进应用程序组织
- MVC即 Model+View+Controller
let Model={
data:{数据源},
create:{增加数据},
delete:{删除数据},
update(data){
Object.assign(m.data,data)//用新数据替换旧数据
eventBus.trigger('m:update')//eventBus触发'm:update'信息,通知View刷新界面
},
get:{获取数据}
}
let View={
el:要刷新的元素,
html:'要显示在页面上的内容'
init(){
v.el:需要刷新的元素
},
render(){
刷新页面
}
}
//示例
let Controller={
init(){
v.init()//初始化View
v.render()//第一次渲染页面
c.autoBindEvents()//自动的事件绑定
eventBus.on('m:update',()=>{v.render()}//当enentsBus触发'm:update'是View刷新
},
events:{事件以哈希表的方式记录存储},
method(){
data=新数据
m.update(data)
},
autoBindEvents(){自动绑定事件}
}
EventBus 有哪些 API,是做什么用的
- EventBus基本的api有on(监听事件),trigger(emit)(触发事件),off(取消监听)方法。
- 用于模块间的通讯,view组件层面,父子组件、兄弟组件通信都可以使eventbus处理
//触发事件:注意事件名不能有空格
eventBus.trigger('m:update')
//监听事件
eventBus.on('m:update',()=>{ //名字不能有空格
v.render(m.data.n)
localStorage.setItem('x', m.data.n)
})
- 可以用jquery引入:
const eventBus = $({window})
表驱动编程是做什么的
- 表驱动法是一种编程模式(scheme)——从表里面查找信息而不使用逻辑语句(if和case)
- 表驱动编程是一种很重要的编程思想,它的理念是从大量相似的代码中抽取出本质的东西,组成哈希表,利用表进行编程,以减少重复代码
- 事实上,凡是能通过逻辑语句来选择的事物,都可以通过查表来选择。对简单的情况而言,使用逻辑语句更为容易和直白。但随着逻辑链的越来越发杂,查表法也就愈发显得更具吸引力
const c = {
events: { //哈希表
'click #add1':'add',
'click #minus1':'minus',
'click #mul2':'mul',
'click #divide2':'divide'
},
add() {
m.update({n:m.data.n += 1})
},
minus() {
m.update({n:m.data.n -= 1})
},
mul() {
m.update({n:m.data.n *= 2})
},
divide() {
m.update({n:m.data.n /= 2})
},
autoBindEvents(){
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) //通过遍历哈希表监听事件
}
}
}
我理解的模块化
- 模块化就是为了减少系统耦合度,提高高内聚,减少资源循环依赖,增强系统框架设计。
- 让开发者便于维护,同时也让逻辑相同的部分可复用
- 可用export 导出,用import导入