前端 x MVC

183 阅读1分钟

 我一开始对mvc的印象是,一个解耦的方案。

MVC即 Model+View+Controller ,其中

Model用于封装业务逻辑相关的数据以及处理数据的方法,eg:

const m = {
            data:{
                n:0
            },
            create(){},
            update(){},
            destroy(){}
          }

View是在显示器上的显示,描述的是Model当前的状态,当Model里的数据发生变化时,View会得到重新渲染的机会,eg:

const v= {
            el:'#app',
            html=`<div>{{n}}</div>`,
            render(){
                $(v.html).appendTo(v.el)
            }
         }

Controller控制用户界面对用户行为的相应方式,处理用户的行为和Model上的改变,eg:

const c ={
            events:{
                'click #add1':'add'
            },
            add(){
                m.data.n+=1
                v.render(m.data.n)
            },
            autoBindEvents(){}
         }

Eventbus是用来监听Model中数据的变化并在Controller执行相应的操作,有on()和trigger()两个方法eg:

const eventBus = $(window)
const m = {
            data:{
                n:0
            },
            create(){},
            update(){
                Object.assign(m.data,data)
                eventBus.trigger('eb')
            },
            destroy(){}
          }
const c ={
            init(){
                eventBus.on('eb',()=>{
                    v.render(m.data.n)
                })
            },
            events:{
                'click #add1':'add'
            },
            add(){
                m.update(data:{n:m.data.n+1})
            },
            autoBindEvents(){}
         }
参考:https://efe.baidu.com/blog/mvc-deformation/

表驱动编程:是一种使你可以在表中查找信息,而不必用很多的逻辑语句(if或case)来把它们找出来的方法。

表格驱动的意义在于:逻辑和数据分离

在程序中,添加数据和逻辑的方式是不一样的,成本也是不一样的。简单的说,数据的添加是非常简单低成本和低风险的;而逻辑的添加是复杂高成本高风险的。

参考:blog.csdn.net/u010490524/…

对于模块化的思考:

首先,模块化是将一整段比较复杂的代码拆分成若干个模块,每个模块拥有各自的数据和方法,只向外部暴露一些方法与其他模块通信。

模块化的好处在于耦合性低,按需加载;减少命名空间污染;更高的复用性和高可维护性。

参考:segmentfault.com/a/119000001…