Skip to content

Latest commit

 

History

History
83 lines (71 loc) · 2.85 KB

11.浅析 MVC.md

File metadata and controls

83 lines (71 loc) · 2.85 KB

浅析 MVC

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

    //模型model:数据保存,将请求到的数据传给Controller
    const m = {
        data: {},
        create() { },
        delete() { },
        update() {},
        get() {}
    }
    //视图view:用户界面,负责HTML界面的渲染
    const v = {
        el: null,
        // 初始化html
        html: `代码`
        ,
        init(container) {
            v.el = $(container)
        },
        render(n) { }
    }
    //控制器controller:业务逻辑,负责监听并处理view事件,更新和灵活调用Model
    const c = {
        init(container) {})
        }, 
        events: { 事件}, 
        add() {详细执行},
        minus() {详细执行},
        mul() {详细执行},
        div() {详细执行},
        autoBindEvents() {逻辑}
        }
    }
  2. EventBus 有哪些 API,是做什么用的,给出伪代码示例?

    1. EventBus 能够简化各组件间的通信,让我们的代码书写变得简单,能有效的分离事件发送方和接收方(也就是解耦的意思),能避免复杂和容易出错的依赖性和生命周期问题。
    2. EventBus 提供了 on、off 和 trigger 等 API,on 用于监听事件,off用于取消监听,trigger 用域触发事件
    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. 表驱动编程是做什么的(可以自己查查资料)

    • 表驱动方法是一种使你可以在表中查找信息,而不必用逻辑语句(if 或 case)来把他们找出来的方法。事实上,任何信息都可以通过表来挑选。在简单的情况下,逻辑语句往往更简单而且更直接。但随着逻辑链的复杂,表就变得越来越富于吸引力了。
    • 表驱动编程的意义在于逻辑与数据的分离。( 类似于事件委托 )
    • 在面对过多相同代码的时候,可以利用表查询替代重复操作,避免产生意大利面式代码
  4. 我是如何理解模块化的

    • 模块化基于最小知识原则, 是一种面向对象程序设计的指导原则,它描述了一种保持代码松耦合的策略。说人话就是,修改代码不需要牵一发而动全身。
    • 通过将代码按照不同的模块进行区分,并进行组合,减少代码之前相互影响的可能性
    • 提高代码复用率
    • 提高代码可维护性
    • 避免变量污染,命名冲突
    • 依赖关系的管理