《浅析 MVC》

96 阅读2分钟

1、MVC 三个对象分别做什么,给出伪代码示例?

MVC是什么?

每个模块都可以写成三个对象,分别是M、V、C

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

M-Model(数据模型):

const m = {
  get() {
    return parseFloat(localStorage.getItem('n'))
  },
  set(n) {
    localStorage.setItem('n', n)
  }
}

V-View(视图):

const v = {
    el: null,
    // 初始化html
    html: `代码`
    ,
    init(container) {
        v.el = $(container)
    },
    render(n) {}

C-Controller(控制器):

const c = {
    init(container) {})
    }, 
    events: { 事件}, 
    add() {详细执行},
    minus() {详细执行},
    mul() {详细执行},
    div() {详细执行},
    autoBindEvents() {逻辑}
    }
}

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

EventBus 基本的 ​API 有 ​on (监听事件), ​trigger (触发事件), ​off (取消监听)方法。

用于模块间的通讯, ​view 组件层面,父子组件、兄弟组件通信都可以使 ​eventbus 处理

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)
  }
}

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

表驱动法,又称之为表驱动、表驱动方法。 “表”是几乎所有数据结构课本都要讨论的非常有用的数据结构。表驱动方法出于特定的目的来使用表,程序员们经常谈到“表驱动”方法,但是课本中却从未提到过什么是"表驱动"方法。

表驱动方法是一种使你可以在表中查找信息,而不必用很多的逻辑语句(if或Case)来把它们找出来的方法。事实上,任何信息都可以通过表来挑选。在简单的情况下,逻辑语句往往更简单而且更直接。但随着逻辑链的复杂,表就变得越来越富有吸引力了。

在JS中,表就是指的哈希表结构,使用表驱动编程,能使重复冗余的代码变的稳定简洁

bindEvents(){
    v.el.on('click','#add1',()=>{
    m.data.n +=1
    v.render(m.data.n)
    })
    v.el.on('click','#minus1',()=>{
    m.data.n-=1
    v.render(m.data.n)
    })
    v.el.on('click','#mul2',()=>{
        m.data.n*=2
        v.render(m.data.n)
    })
    v.el.on('click','#divide2',()=>{
        m.data.n/=2
        v.render(m.data.n)
    })
}

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

什么是模块化?

  • 模块化就是为了减少系统耦合度,提高高内聚,减少资源循环依赖,增强系统框架设计。

  • 让开发者便于维护,同时也让逻辑相同的部分可复用

  • 模块化开发:针对js、css,以功能或业务为单元组织代码。js方面解决独立作用域、依赖管理、
    api暴露、按需加载与执行、安全合并等问题,css方面解决依赖管理、组件内部样式管理等问题。

    任何事物都有一个过程,那么模块化的过程通俗点讲就是:

模块化的过程就是:
  • 1、拆分
    将整个系统按功能,格式,加载顺序,继承关系分割为一个一个单独的部分.
    注意:拆分的粒度问题,可复用问题,效率问题.如何这些问题处理的不好,就有可能出现不想要的后果。
  • 2、归纳
    将功能或特征相似的部分组合在一起,组成一个资源块.
  • 3、总结
    将每个资源块按找需求,功能场景以及目录约束放到固定的地方以供调用.
  • 模块化的好处: 

  • 1.  避免变量污染,命名冲突
    
  • 1.  提高代码复用率
    
  • 1.  提高维护性
    
  • 1.  依赖关系的管理