MVC 是什么?
1、MVC模式(Model–view–controller)是一种设计模式(或者软件架构);
把系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
2、每个模块是否可以写成三个对象,分别是M、V、C。
3、M-Model(数据模型)负责操作所有数据和服务器进行交互,将请求到的数据传给Controller。
4、V-View(视图)负责所有 UI 界面,HTML 渲染。
5、C-Controller(控制器)负责监听并处理View 的事件,更新和调用 Model;也负责监听 Model的变化(Model从服务器获得数据),并更新 View。Controller 控制其他所有流程
const m = {
data: {},
create() {增 },
delete() { 删},
update() {改},
get() {查}
}
const v = {
el: null,
// 初始化html
html: `代码`
,
init(container) {
v.el = $(container)
},
render(n) { }
}
const c = {
init(container) {})
},
events: { 事件},
add() {详细执行},
minus() {详细执行},
mul() {详细执行},
div() {详细执行},
autoBindEvents() {逻辑}
}
}
EventBus 有哪些 API,是做什么用的,给出伪代码示例?
当一个事件执行,eventBus 触发 m:updated eventBus.trigger('m:updated')
eventBus 监听 m:updated,当 m:updated 触发时,执行一些内容
eventBus.on('m:updated',()=>{
v.render(m.data.n)
})
表驱动编程是做什么的(可以自己查查资料)
表驱动方法编程(Table-Driven Methods)是一种编程模式,适用场景:消除代码中频繁的if else或switch case的逻辑结构代码,使代码更加直白.
c = {
events:{
'click #add1':'add',
'click #minus1':'minus',
'click #mul2':'mul',
'click #divide2':'div'
},
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)
}
}
}
我是如何理解模块化的
将一个复杂的程序依据一定的规则(规范)封装成几个块(文件)并进行组合。
模块的内部数据的实现是私有的,只是向外部暴露一些接口(方法)与外部其他模块通信。这则就是模块化。
模块化可以降低代码耦合度,减少重复代码,提高代码重用性,并且在项目结构上更加清晰,便于维护。