浅析MVC

102 阅读1分钟

MVC

M:Model数据模式,负责操作所有数据

V:View视图,负责所有UI界面

C:Controller,控制器负责其他

const m = {
    data: {},
    create() {增 },
    delete() { 删},
    update() {改},
    get() {查}
}
const v = {
    el: null,
    // 初始化html
    html: `代码`
    ,
    init(container) {
        v.el = $(container)
    },
    render(n) { }
}
const c = {
    init(container) {})
    }, 
    events: { 事件}, 
    add() {详细执行},
    minus() {详细执行},
    mul() {详细执行},
    div() {详细执行},
    autoBindEvents() {逻辑}
    }
}

EventBus

可以进行组件之间的监听和通信

EventBus.on()监听事件

eventBus.on('m:updated',()=>{
     v.render(m.data.n)
 }) //监听 m:updated,当 m:updated 触发时,执行事件

EventBus.trigger()触发事件

eventBus.trigger('m:updated') //当一个事件执行,eventBus 触发 m:updated

EventBus.off()解除绑定

eventBus.off('m:updated') //解除m:updated绑定

表驱动编程

表驱动方法编程(Table-Driven Methods)是一种编程模式,适用场景:消除代码中频繁的if else或switch case的逻辑结构代码,使代码更加直白.

c = {
    events:{
        'click #add1':'add',
        'click #minus1':'minus',
        'click #mul2':'mul',
        'click #divide2':'div'
    },
    autoBindEvents(){
        for(let key in c.events){
            const value = c[c.events[key]]
            const spaceIndex = key.indexOf(' ')
            const part1 = key.slice(0, spaceIndex)
            const part2 = key.slice(spaceIndex + 1)
            v.el.on(part1,part2,value)
        }
    }
}

模块化的理解

将一个复杂的程序依据一定的规则(规范)封装成几个块(文件)并进行组合。 模块的内部数据的实现是私有的,只是向外部暴露一些接口(方法)与外部其他模块通信。这就是模块化。 模块化可以降低代码耦合度,减少重复代码,提高代码重用性,并且在项目结构上更加清晰,便于维护。