MVC (Model-View-Controller)

MVC 是一种软件架构模式或者叫 MVC 框架;由模型(Model)、视图(View)、控制器(Controller)构成。该模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用可能。除此之外,此模式透过对复杂度的简化,使程序结构更加直观。透过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。

  • 控制器(Controller):负责操作模型在视图里显示以及其他
  • 视图(View):负责操作 UI 层
  • 模型(Model):负责操作数据

1. MVC 三个对象是做什么的?

我们用伪代码来看看这三个对象具体是做什么的

例:用伪代码的逻辑实现一个点击按钮 +1

//Model
 m对象 = {
    数据对象:{
      n:0
    }
}
//view
 v对象 = {
    标签:<div id='add1' >${{m对象.数据对象.n}}<div>
}
//Controller
 c对象 = {
    点击:(){
      id为add1的元素的内容为m对象.数据对象.n+=1
    }
}
//首先我们知道数据在m对象、ui显示在v对象、行为在c对象。为什么这种模式比HTML css js各位一个文件好呢?
//显而易见这种模式的好处在于一个文件既知所有(视图 行为)。便于修改。便于后面查找以及维护

2. EventBus 有哪些 API 是做什么的?

EventBus 是做监听事件和触发事件可以造成通信。对应 EventBus.on、EventBus.trigger

例:用户输入数字渲染到 UI 里

引入jquery
const EventBus = $({})

const number = undefined

function 输入(){
   number = 用户输入
   EventBus.trigger('某某事件')   //触发
}

EventBus.on('某某事件',()=>{      //监听
  把number 放到UI里
})

3. 表驱动编程是什么的?

表驱动编程本质上是对某个固定不同的值做出不同的反应

例:一年有 12 个月份。每个月份相对应于天数

如果我想知道 1-12 月每个月份有多少天数用 if 或者 switch 来解决你不觉得代码太糟糕了吗?

这个时候表驱动编程就体现出它的好处了

const year = {
  1月份:**天数
  2月份:**天数
  3月份:**天数
  ...
}

4. 如何理解模块化?

    模块化对于一个应用来说是对某个局部的功单独在一个文件里实现,这种好处是以后对该功能进行修改比较方便重复
利用。模块化对于代码来说,具有重复性相同的代码进行一个函数封装调用即可。同理该代码模块化可重复利用便于维护
以及日后好查找