浅析MVC

220 阅读1分钟

MVC是什么?

MVC表示三个模块,分别是M、V、C,每个模块都可以写成三个对象。
M - Model (数据模型)负责操作所有数据
V - View (视图)负责所有UI界面
C - Controller (控制器) 负责除前两种外其他部分
MVC并没有很严格的界限和定义,它是一种设计模式,用来优化代码结构。
完全理解MVC比较复杂。它类似于一种标准化的思想,即对重复性的事物和概念,通过制订、发布和实施标准达到统一,以获取最佳的秩序和最好的效益。

1. MVC分别做什么?

下面给出伪代码示例:

let M = {} , V = {} , C = {}
// 模拟MVC三个对象

M.data = {data}
// Model 负责操作所有的数据
V.render = (M) => { display(M.data) }
// View 负责所有UI界面渲染
C.handleOnload = () => { V.render(M) }
// Controller 作为M和V之间沟通的通信通道

const m = {
    data : {data},
    Method: {}
}

const v = {
    el:nullhtml:`代码`init(container){
        v.el = $(container)
    },
    render()
}

const c = {
    init(container){}
    events:{事件}
    add(){}
    minus(){}
    update(){}
    get(){}
    autoBindEvents(){逻辑}
}

2. EventBus 有哪些 API,是做什么用的,给出伪代码示例

EventBus 中常用的 API 伪代码为例:

import $ from 'jquery'

class EventBus {
  constructor() {
    this._eventBus = $(window)
  }

  on(eventName, fn) {
    return this._eventBus.on(eventName, fn)
  }
// 监听注册事件,并执行指定方法(和插入点)。

  trigger(eventName, data) {
    return this._eventBus.trigger(eventName, data)
  }
// 触发某个具体事件,并执行这个事件对应的实现方法队列。

  off(eventName, fn) {
    return this._eventBus.off(eventName, fn)
  }
// 取消注册事件。
}


export default EventBus

3. 表驱动编程是做什么的

表驱动编程(Table-Driven Approach),简单讲是指用查表的方法获取值。在数值不多的时候我们可以用逻辑语句(if 或case)的方法来获取值,但随着数值的增多逻辑语句就会越来越长,此时表驱动法的优势就显现出来了。在使用表驱动法的时候必须要解决的一个问题就是如何查表。
常用的查表方式有

  • 直接查询
  • 索引查询
  • 分段查询 直接查询,是指无需绕圈子,用下标的方式就能顺利的获取到数据,下面示例代码仅演示直接查询法:
const week = {"星期日""星期一""星期二""星期三""星期四""星期五""星期六",}
let day = week[day]

只要一条语句就可以代替长长的if-else语句。数据驱动编程的核心出发点是相对于程序逻辑,人类更擅长于处理数据


4. 我是如何理解模块化的

根据目前粗浅的理解,模块就是实现特定功能的一组方法。只要把不同的函数(以及记录状态的变量)简单的放在一起,就算是一个模块。再通过导出/引入的操作,简化了代码之间的影响。

let string = "string"

import default string //导出
import $ from `string` // 引入