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