MVC是什么?
MVC表示三个模块,分别是M、V、C,每个模块都可以写成三个对象。
M - Model (数据模型)负责操作所有数据
V - View (视图)负责所有UI界面
C - Controller (控制器) 负责除前两种外其他部分
MVC并没有很严格的界限和定义,它是一种设计模式,用来优化代码结构。
完全理解MVC比较复杂。它类似于一种标准化的思想,即对重复性的事物和概念,通过制订、发布和实施标准达到统一,以获取最佳的秩序和最好的效益。
1. MVC分别做什么?
下面给出伪代码示例:
let M = {} , V = {} , C = {}
// 模拟MVC三个对象
M.data = {data}
// Model 负责操作所有的数据
V.render = (M) => { display(M.data) }
// View 负责所有UI界面渲染
C.handleOnload = () => { V.render(M) }
// Controller 作为M和V之间沟通的通信通道
const m = {
data : {data},
Method: {}
}
const v = {
el:null,
html:`代码`,
init(container){
v.el = $(container)
},
render()
}
const c = {
init(container){}
events:{事件}
add(){}
minus(){}
update(){}
get(){}
autoBindEvents(){逻辑}
}
2. EventBus 有哪些 API,是做什么用的,给出伪代码示例
EventBus 中常用的 API 伪代码为例:
import $ from 'jquery'
class EventBus {
constructor() {
this._eventBus = $(window)
}
on(eventName, fn) {
return this._eventBus.on(eventName, fn)
}
// 监听注册事件,并执行指定方法(和插入点)。
trigger(eventName, data) {
return this._eventBus.trigger(eventName, data)
}
// 触发某个具体事件,并执行这个事件对应的实现方法队列。
off(eventName, fn) {
return this._eventBus.off(eventName, fn)
}
// 取消注册事件。
}
export default EventBus
3. 表驱动编程是做什么的
表驱动编程(Table-Driven Approach),简单讲是指用查表的方法获取值。在数值不多的时候我们可以用逻辑语句(if 或case)的方法来获取值,但随着数值的增多逻辑语句就会越来越长,此时表驱动法的优势就显现出来了。在使用表驱动法的时候必须要解决的一个问题就是如何查表。
常用的查表方式有
- 直接查询
- 索引查询
- 分段查询 直接查询,是指无需绕圈子,用下标的方式就能顺利的获取到数据,下面示例代码仅演示直接查询法:
const week = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六",}
let day = week[day]
只要一条语句就可以代替长长的if-else语句。数据驱动编程的核心出发点是相对于程序逻辑,人类更擅长于处理数据。
4. 我是如何理解模块化的
根据目前粗浅的理解,模块就是实现特定功能的一组方法。只要把不同的函数(以及记录状态的变量)简单的放在一起,就算是一个模块。再通过导出/引入的操作,简化了代码之间的影响。
let string = "string"
import default string //导出
import $ from `string` // 引入