MVC到底是什么
MVC是一种在编程世界中广泛应用的设计模式,它把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
- M-Model:负责操作所有数据;
- V-View:负责所有UI界面;
- C-Controller:负责转发请求,对请求进行处理。
MVC没有严格的定义,每个程序员对MVC的理解都不一样,但对着三个名字是没有分歧的。 伪代码如下:
const m = {//数据层,关于数据的操作放在这里
data:{
n:parseInt(localStorage.getItem('number')||100)
},//数据初始化
update:function (data) {
//更新数据的方法
},
delete:function (data) {
//删除数据的方法
},
get:function (data) {
//获得数据的方法
}
}
const v = {//视图层,关于视图的操作放在这里
el:'挂载点',
html:'需要插入元素内的HTML内容',
render('渲染html')
}
const c = {//控制层,关于事件监听的放到这里
//找到重要的元素绑定事件
//如果触发事件调用更改数据方法及渲染方法
const a =$('找到A')
const b = $('找到B')
b.on('click',function(){
//调用数据层方法更改数据
//调用视图层方法渲染页面
})
}
EventBus
1. 定义及作用
EventBus 又称为事件总线。在Vue中可以使用 EventBus 来作为沟通桥梁的概念,就像是所有组件共用相同的事件中心,可以向该中心注册发送事件或接收事件,所以组件都可以上下平行地通知其他组件,但也就是太方便所以若使用不慎,就会造成难以维护的灾难,因此才需要更完善的Vuex作为状态管理中心,将通知的概念上升到共享状态层次。
2. 如何使用
- 定义事件
public class MessageEvent { /* Additional fields if needed */ }
- 准备订阅
EventBus.getDefault().register(this);
public void onEvent(AnyEventType event) {/* Do something */};
- 发布事件
EventBus.getDefault.post(event);
表驱动编程
所谓表驱动法(Table-Driven Approach),简单讲是指用查表的方法获取值。
我们平时查字典以及念初中时查《数学用表》找立方根就是典型的表驱动法。在数值不多的时候我们可以用逻辑语句(if 或case)的方法来获取值,但随着数值的增多逻辑语句就会越来越长,此时表驱动法的优势就显现出来了。 它的意义在于:
- 逻辑与数据分离
- 逻辑修改成本巨大,数据修改成本极小
- 数据来源灵活,数据改变灵活
如何理解模块化
1. 什么是模块化
- 将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起;
- 模块的内部数据与实现是私有的,只是向外部暴露一些接口(方法)与外部其它模块通信。
2. 模块化的好处
- 避免命名冲突(减少命名空间污染)
- 更好的分离, 按需加载
- 更高复用性
- 高可维护性
3. 模块化的特点
- 所有代码都运行在模块作用域,不会污染全局作用域。
- 模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。
- 模块加载的顺序,按照其在代码中出现的顺序。