JavaScript中的MVC
MVC三类对象
MVC模式(Model-view-controller) 是一种设计模式(软件架构)。
MVC包括三类对象,将它们分离以提高灵活性和复用性。
- 模型(Model) : 同于数据管理, 一旦模型的数据发生改变,Model将通知有关的视图。
- 视图(View) : 负责用户界面,HTML渲染。 描绘的是Model的当前状态,当模型的数据发生改变,View就会刷新自己。
- 控制(Controller) : 控制器, Controll 控制其他所有流程。 负责监听并处理视图(View)的事件。更新和调用Model。也负责监听Model的变化,并更新View。
MVC for JAVASCRIPT
1 |
|
EventBus
EventBus的实现方法:
- 比如用vue, new一个新的vue,它是一个实例对象。
- 但是最重要的在于它原型上有我们用到的$on(监听)、$off(解绑)、$emit(触发)等API 。
EventBus作用:
- EventBus 主要用于对象间的通信,
- 使用 EventBus 可以满足最小知识原则,model和view互相不知道对方的细节,但是却可用调用对方的功能。
表驱动编程
当我们需要判断 3 种以上的情况,做出相应的事情,往往需要写很多很多的 if else,这样的代码可读性不强。
为了增强代码的可读性,我们可以用表驱动编程,把用来做 if 条件判断的值存进一个哈希表,然后从表里取值。
而这种做法的意义就在于: 逻辑和数据是分离的
举个例子,比如国家简写转换,给一个国家全名,转换成国家简写,用if else语法来写:
1 |
|
用 if else语句这样做,如果我再增加一个国家,那么就要写一个if else语句。等于又增加了一条逻辑。
那么我们为何不用 表数据编程 把 数据和逻辑分离开实现呢。
毕竟,数据的添加是简单,低成本和低风险的。 而逻辑的添加是负责,高成本和高风险的。
表驱动编程做法:
1 |
|
你瞧这样做,如果你再添加一个国家名(数据),那么我们只需国家列表(数组)中添加一项即可。逻辑方面的我们一点都不需要更改,更别说去考虑逻辑了。
这样,我们就脱离了数据与逻辑的关系了。
参考文章:用表驱动编程重构if-else的意义
自我理解的模块化
将一个复杂的程序依据一定的规则(规范)封装成几个块(文件)并进行组合。
模块的内部数据的实现是私有的,只是向外部暴露一些接口(方法)与外部其他模块通信。这则就是模块化。
模块化的好处:
- 降低代码耦合度
- 减少重复代码
- 提高代码重用性
- 在项目结构上更加清晰,便于维护。