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内部在哈希表里搜索对应的函数,然后执行。实现回调。

表驱动编程

我看到一个很好的例子

  1. function translate(term) {
  2. if (term === '1') {
  3. return '一'
  4. } else if (term === '2') {
  5. return '二'
  6. } else if (term === '3') {
  7. return '三'
  8. } else {
  9. return '???'
  10. }
  11. }
  12. // 如果想添加一个新的名词翻译,需要再添加一个if-else逻辑,例如:
  13. function translate(term) {
  14. if (term === '1') {
  15. return '一'
  16. } else if (term === '2') {
  17. return '二'
  18. } else if (term === '3') {
  19. return '三'
  20. } else if (term === '4') {
  21. // 此处添加了一个新的名词翻译
  22. return '四'
  23. } else {
  24. return '???'
  25. }
  26. }

函数内部的逻辑有明显的规律和重复性,那么可以改造成以下方式,有效的减少代码量也方便维护

  1. function translate(term) {
  2. let terms = {
  3. '1': '一',
  4. '2': '二',
  5. '3': '三'
  6. }
  7. return terms[term];
  8. }

模块化

把专门功能的代码放在一个文件里,然后通过export方式导出,比如就是导出一个方法。提供参数入口,返回值是结果(返回的类型可以是model、view、controller),那么这个代码就是个模块,它具有通用性,符合单一职责原则。
这个在开发中非常重要,在合作开发中如果同事写的代码导出耦合,无法提练成模块,那么我在使用时候肯定想打他。