浅析 MVC

229 阅读1分钟

一、MVC 三个对象分别做什么

  • M:Model(数据模型),负责操作所有数据
  • V:View(视图),负责所有 UI 界面
  • C:Controller(控制器),处理用户的行为和数据上的改变

以下是示例代码:

const model = {
    data: {
        // 数据
    },
    create() { // 增 },
    delete() { // 删 },
    update(data) { // 改 },
    get() { // 查 }
}
const view = {
    el: null,  // 元素(视图)
    html: `
        <div></div>
    `,
    init() { // 初始化元素(视图) },
    render() { // 渲染元素(视图) }
}
const controller = {
  init() {    // 对整个应用的初始化
    view.init()    // 初始化视图
    view.render()  // 渲染视图
    controller.autoBindEvents()    // 绑定事件
  },
  autoBindEvents() { },
  add() { },
  minus() { },
  mul() { },
  div() { },
}

二、EventBus

EventBus 是一个以事件为驱动的消息服务总线。

  • on: 监听事件
  • trigger(emit): 触发事件
  • off: 取消监听

以下是代码示例:

// EventBus.js

class EventBus {
    constructor() {
        this._eventBus = $(window)
    }
    on(eventName, fn) {
        return this._eventBus.on(eventName, fn)
    }
    trigger(eventName, data) {
        return this._trigger.trigger(eventName, data)
    }
    off(eventName, fn) {
        return this._eventBus.off(eventName, fn)
    }
}
export default EventBus
// new.js

import EventBus from 'EventBus.js'
const eventBus = new EventBus()
eventBus.on()
eventBus.trigger()
eventBus.off()

三、表驱动编程是做什么的

表驱动编程方法是一种使你可以在表中查找信息,而不必用很多的逻辑语句(if或Case)来把它们找出来的方法。在简单的情况下,逻辑语句往往更简单而且更直接。但随着逻辑链的复杂,复杂度也会越来越高。表就可以减少重复代码,只将重要的信息放在表里,然后利用表来编程,与逻辑语句相比较有着更稳定的复杂度。
作者:云卷云舒听雨声
链接:www.jianshu.com/p/938da4774…
来源:简书

示例代码(未使用表驱动):

if (n === '1') {
    console.log('a')
} else if (n === '2') {
    console.log('b')
} else if (n === '3') {
    console.log('c')
} else if (n === '4') {
    console.log('d')
}

示例代码(使用表驱动):

const obj = {
    '1': 'a',
    '2': 'b',
    '3': 'c',
    '4': 'd'
}
const n = '2'
console.log(obj[n])