《浅析MVC》

84 阅读2分钟

MVC是什么?

MVC是一种设计模式,大概就是通过将所有的代码都归为数据类型(model)、视图(view)、控制器(controller),三个模块。正所谓一千的读者心中有一千个哈姆雷特。每个人对于MVC的理解都不同,写出来的代码也都不一样,很难系统和准确的定义MVC具体是什么。

为什么要学习MVC?

既然MVC的模糊,那么为啥要学习MVC呢?因为MVC中蕴含了很多的经典的抽象思维,其中的一些思想是值得我们重点学习的。

MVC的特点是什么?

Model(数据类型)

  1. M:Model(数据类型)——负责操作所有的数据
  2. V:View(视图)——负责所有的UI界面
  3. Controller(控制器)——负责其他

Model

 const m = {
     date:{},
     create() {},
     delete() {},
     update() {},
     get() {}
 }

View

    const v = {
        el:null,
        html:``,
        init(container){},
        render(n){}
    }

Controller

    const c = {
        init(container){},
        events:{
            add(){},
            mins(){},
            mul(){},
            divide(){}
        },
        autoBindEvents(){}
    }

EventBus(对象间通信)有哪些API,都有哪些用法?

EventBus中有两个用的最多的API是on、trigger.

on——监听事件

    eventBus.on('click', ()=>{
        console.log('hi')
    })

trigger——触发事件

    eventBus.trigger('xxx')

表驱动编程

表驱动编程是一种使你可以在表(hash表)中查找信息,而不必使用if case语句来把它们找出来的方法。实际是,任何的信息都可以使用表来显示并挑选。

在一些简单的逻辑下,往往使用逻辑语句更加简洁和直接,但是随着逻辑链和信息表的复杂,使用表驱动编程就会更加方便。表驱动编程的意义就在于逻辑和数据的分离。例如:事件绑定:

    events:{
        'click #app1':'add'
        'click #app2':'mins'
        'click #app3':'mul'
        'click #app4':'divide'
    },
    add(){},
    minis(){},
    mul(){},
    divide(){}

上面例子就是先将数据放在一个hash表中,再去编写执行的函数。

模块化的理解

我所理解的模块化就是

  1. 首先是一块一块的,才能是模块。使用最小知识原则,将每一个功能不同功能做成一个一个的模块,通过引用JS,将其串联起来。使用的人知道的知识越少越好。
  2. 每一块都要是模式一样的,这就要用到MVC设计重构代码,,就不需要再去思考类似的需求应该什么做了
  3. 代码的模块化,同样的代码如果写过三遍,就应该抽出来写成一个函数。
  4. 属性的模块化,同样的属性如果写过三遍,就应该做成共有属性(原型或者类)。
  5. 原型的模块化,同样的原型如果写过三遍,就应该使用继承。