《浅析MVC》

MVC阐述

MVC一种设计模式,让你的面条式代码分成一个一个模块。

  1. M:Model(数据模型)负责操作所有数据
const m = {
  data: {数据},
  create(增) {},
  delete(删) {},
  update(data) {改},
  get(查) {}
}
  1. V:View(视图)负责所有UI界面
const v = {
  el: 元素,
  html: `内容`,
  init(container) {初始化},
  render(n) {渲染}
}
  1. C:Controller(控制器)负责处理 View 的事件,并更新Model,也负责监听 Model 的变化,并更新 View , Controller 控制其他所有流程
const c = {
  init(container) {
    v.init(初始化)
    v.render(渲染页面) // view = render(data)
    c.autoBindEvents(自动绑定)
    eventBus.on('m:updated', () => {
      console.log('here')
      v.render(m.data.n) //触发update重新渲染
    })
  },
  events: {哈希表},
  add() {
    m.update({n: m.data.n + 1})
  },
  minus() {
    m.update({n: m.data.n - 1})
  },
  mul() {
    m.update({n: m.data.n * 2})
  },
  div() {
    m.update({n: m.data.n / 2})
  },
  autoBindEvents() {
    for (let key in c.events) { //遍历events 然后绑定事件
      const value = c[c.events[key]]
      const spaceIndex = key.indexOf(' ')
      const part1 = key.slice(0, spaceIndex)
      const part2 = key.slice(spaceIndex + 1)
      v.el.on(part1, part2, value)
    }
  }
}

Eventbus

  • EventBus也一种设计模式或框架,主要用于组件/对象间通信的优化简化。
  • Eventsbus常用API
    .on()监听事件的变化
 this.on('m:updated', () => {
      this.render(this.data)
    })

.trigger()自动触发事件

 update(data) {
    Object.assign(m.data, data)//把传进来的data直接放在m.data上
    eventBus.trigger('m:updated')//通过trigger自动更新数据
    localStorage.setItem('n', m.data.n)//储存数据

.off()关闭事件监听

表驱动编程

表驱动编程就是将诸多事件进行简化的一种写法
通过将一堆绑定事件简化为哈希表,并对其进行遍历的方式简化代码

优点:

  • 提高了程序的可读性。
  • 减少了重复代码。
  • 可扩展性。
  • 程序有一个明显的主干。
  • 降低了复杂度

模块化

通过模块化使每个板块的代码各司其职,自己管理自己的内容逻辑,方便日后维护等,在每个板块中MVC也是模块化的体现,把原本杂乱的代码通过m,v,c抽离成雄小的模块
重复的代码==>抽象成函数
同样的属性==>抽象成原型或类
同样的原型==>使用继承
模块化可以让我们的代码称为所谓的“好代码”

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 【目录】 一、MVC 三个对象分别做什么二、EventBus 有哪些 API,是做什么用的三、表驱动编程是做什么的...
    云卷云舒听雨声阅读 434评论 0 0
  • MVC 是一种软件架构模式或者叫 MVC 框架;由模型(Model)、视图(View)、控制器(Controlle...
    为谁填词曲为谁_404阅读 126评论 0 0
  • MVC是什么,有什么用 MVC全名是Model View Controller,是模型(model)-视图(vie...
    Amber886阅读 191评论 0 0
  • 1.MVC模式 MVC模型对应着 Model(模型) View(视图) Controller(控制器) 构成的开...
    Prayx阅读 190评论 0 0
  • 一、 MVC 设计模式 1. 设计模式 设计模式,是通用代码(组织方式)的一种统称 2. MVC 是什么 MVC ...
    x___h阅读 339评论 0 0