MVC学习笔记

245 阅读2分钟

MVC入门

什么是MVC

M:Model(数据模型)
V:View(视图)
C:Controller(控制器)

M是数据终端,用于保管所有的数据;V算是视图终端,从M那里获取数据控制页面所有的视图;C是控制终端,控制页面的全部行为,包括数据的行为,页面的逻辑等。

// M
const m = {
    data() {}, // 全部数据
    add() {}, // 增删改查
    edit() {},
    delete() {}
}
// V
const v = {
    el: '', // 挂载目标
    template: '', // 填充元素
    render() {} // 元素渲染
}
// C
const c = {
    onChange() {}, // 绑定页面事件等等
    ...others
}

通过MVC设计模式解耦传统网页,使前端代码更易维护,结构清晰,耦合度低,稳定性更高。

EventBus

eventBus是一种事件总线,事件产生时(eventBus.$emit)通过总线传递相关信息,其他方法中使用总线的API来获取目标事件的信息(eventBus.$on)。因为所有事件的产生和管理都在这一根线上,类似于电路系统,事件产生类似于触发了电位变化,外接的线路就可以获取到电位的变化,从而进行相关操作。

// 绑定事件
eventBus.$on('eventName', cb)
// 触发事件
eventBus.$emit('eventName', arguments)

表驱动编程

表驱动编程应用了hashMap的思维模式,使用相应的key值存储相应的数据(变量,函数,对象等等),将定义与使用解耦,通过共有的hashMap,使用特定的key就能获取想要的数据。对于数据统一化管理提供了质变的好处。

const nameScore = {
    'xiaoming': 90,
    'xiaohong': 60
}
for (let name in nameScore) {
    console.log(nameScore[name])
}

模块化

模块化是:

  • 将一个复杂的程序依据一定的规则(规范)封装成几个块(文件), 并进行组合在一起
  • 块的内部数据与实现是私有的, 只是向外部暴露一些接口(方法)与外部其它模块通信

模块化具有:

  • 避免命名冲突(减少命名空间污染)
  • 更好的分离, 按需加载
  • 更高复用性
  • 高可维护性

的优点