MVC介绍
MVC是一种设计模式
分为Model数据、Controller控制器、View三层
Model 主要是业务数据和一些数据相关的逻辑,model负责渲染view,从model到view的方向是要保持单向的
View负责展示界面内容和接受用户交互,Controller负责控制。
比如View上有一个手机号输入框,接收了用户输入,Controller根据输入内容制造新的Model,然后将Model分发给对应的View。
EventBus
这是一个发布\订阅模式,是一种响应式编程思想
看了一个文章
https://segmentfault.com/a/1190000017907688
原理是创建一个对象EventBus,内部保存一个哈希表,key是订阅名称,value是响应函数
当发起订阅时候,就是把订阅名和函数绑定在哈希表上
假设订阅名是subscriblename,发布的时候,外部执行EventBus的emit函数,传递键值subscriblename和其他所需参数,EventBus内部在哈希表里搜索对应的函数,然后执行。实现回调。
表驱动编程
我看到一个很好的例子
function translate(term) {
if (term === '1') {
return '一'
} else if (term === '2') {
return '二'
} else if (term === '3') {
return '三'
} else {
return '???'
}
}
// 如果想添加一个新的名词翻译,需要再添加一个if-else逻辑,例如:
function translate(term) {
if (term === '1') {
return '一'
} else if (term === '2') {
return '二'
} else if (term === '3') {
return '三'
} else if (term === '4') {
// 此处添加了一个新的名词翻译
return '四'
} else {
return '???'
}
}
函数内部的逻辑有明显的规律和重复性,那么可以改造成以下方式,有效的减少代码量也方便维护
function translate(term) {
let terms = {
'1': '一',
'2': '二',
'3': '三'
}
return terms[term];
}
模块化
把专门功能的代码放在一个文件里,然后通过export方式导出,比如就是导出一个方法。提供参数入口,返回值是结果(返回的类型可以是model、view、controller),那么这个代码就是个模块,它具有通用性,符合单一职责原则。
这个在开发中非常重要,在合作开发中如果同事写的代码导出耦合,无法提练成模块,那么我在使用时候肯定想打他。