1. MVC 三个对象分别做什么

每个模块都可以写成三个对象,分别是

  • M —— Model 数据类型 负责操作所有数据
  • V —— View 视图 负责所有UI界面
  • C —— Controller 控制器 负责其他

代码示例

将代码重构成mvc模式

// 数据相关都放到m
const m = {
  data: {},
  create() {},
  delete() {},
  update() {},
  get() {}
}

// 视图相关都放到v
const v = {
  el: null,
  html: ``, //放html
  init() {}, //初始化
  render() {} //渲染
}

// 其他操作、方法都放c
const c = {
  init() {},
  events: {},
  add() {},
  minus() {},
  mul() {},
  div() {},
  autoBindEvents() {}
}

2. EventBus 有哪些 API,是做什么用的,给出伪代码示例

常用API

  1. on
  2. trigger()
  3. off

具体用法

  1. EventBus.on() 绑定事件
 eventBus.on('eventName',fn)
 //事件名,回调函数
  1. EventBus.trigger 触发事件
eventBus.trigger('eventName',data)
  1. eventBus.off 解绑事件
eventBus.off('eventName',fn)

3. 表驱动编程

表驱动法就是将要不断`if else`的代码做成哈希表,结构简单明了。
让代码稳定性高,更易修改维护
//不用表编程
if(key===1){
    add1()
}
else if(key===2){
    add2()
}
else if(key===3){
    add3()
}
else if(key===4){
    add4()
}else{
    add5()
}

//使用表编程
const events = {
    1: add1()
    2: add2()
    3: add3()
    4: add4()
    5: add5() 
}
events[key]()

优点:

  1. 减少代码重复
  2. 降低复杂度,结构明晰
  3. 提高代码可读性

我是如何理解模块化的

优点

  1. 分层,结构清晰
  2. 降低了每个模块耦合度
  3. 多人合作互不干扰 开发人员分工明确,提高开高效率,降低维护成本。