MVC是什么?
MVC是一种设计模式,大概就是通过将所有的代码都归为数据类型(model)、视图(view)、控制器(controller),三个模块。正所谓一千的读者心中有一千个哈姆雷特。每个人对于MVC的理解都不同,写出来的代码也都不一样,很难系统和准确的定义MVC具体是什么。
为什么要学习MVC?
既然MVC的模糊,那么为啥要学习MVC呢?因为MVC中蕴含了很多的经典的抽象思维,其中的一些思想是值得我们重点学习的。
MVC的特点是什么?
Model(数据类型)
- M:Model(数据类型)——负责操作所有的数据
- V:View(视图)——负责所有的UI界面
- Controller(控制器)——负责其他
Model
const m = {
date:{},
create() {},
delete() {},
update() {},
get() {}
}
View
const v = {
el:null,
html:``,
init(container){},
render(n){}
}
Controller
const c = {
init(container){},
events:{
add(){},
mins(){},
mul(){},
divide(){}
},
autoBindEvents(){}
}
EventBus(对象间通信)有哪些API,都有哪些用法?
EventBus中有两个用的最多的API是on、trigger.
on——监听事件
eventBus.on('click', ()=>{
console.log('hi')
})
trigger——触发事件
eventBus.trigger('xxx')
表驱动编程
表驱动编程是一种使你可以在表(hash表)中查找信息,而不必使用if case
语句来把它们找出来的方法。实际是,任何的信息都可以使用表来显示并挑选。
在一些简单的逻辑下,往往使用逻辑语句更加简洁和直接,但是随着逻辑链和信息表的复杂,使用表驱动编程就会更加方便。表驱动编程的意义就在于逻辑和数据的分离。例如:事件绑定:
events:{
'click #app1':'add'
'click #app2':'mins'
'click #app3':'mul'
'click #app4':'divide'
},
add(){},
minis(){},
mul(){},
divide(){}
上面例子就是先将数据放在一个hash表中,再去编写执行的函数。
模块化的理解
我所理解的模块化就是
- 首先是一块一块的,才能是模块。使用最小知识原则,将每一个功能不同功能做成一个一个的模块,通过引用JS,将其串联起来。使用的人知道的知识越少越好。
- 每一块都要是模式一样的,这就要用到MVC设计重构代码,,就不需要再去思考类似的需求应该什么做了
- 代码的模块化,同样的代码如果写过三遍,就应该抽出来写成一个函数。
- 属性的模块化,同样的属性如果写过三遍,就应该做成共有属性(原型或者类)。
- 原型的模块化,同样的原型如果写过三遍,就应该使用继承。