《浅析 MVC》

一、MVC的三个对象

1. Model(模型)
模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。

2. View(视图)
视图代表模型包含的数据的可视化。

3. Controller(控制器)
控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。


class Model={
   data(){}         //保存数据
   //管理数据的用法
   create(){}      //增加数据 
   remove(){}    //删除数据
   update(){}     //改变数据
   get(){}           //查看数据
}

class View={
    el                //管理元素,
    html:        //管理HTML
    init(){
    v.el:            //需要刷新的元素
    },
    render(){}    //页面渲染
}

class Controller {
    init() {}              // 初始化相关操作
    events              // 用户操作的事件
    bindEvent() {}   // 绑定事件,响应用户操作
}

二、EventBus 有哪些 API? 有什么用?

1. 模块通信
解决模块之间通信的问题,view组件层面,父子组件、兄弟组件通信都可以使eventbus处理

2. 模块解耦
storage change事件,cookie change事件,view组件的事件等,全部转换使用Event Bus来订阅和发布,这样就统一了整个应用不同模块之间的通信接口问题。

3. 父子页面通信
window.postMessage + Event Bus

4. 多页面通信
torage change + Event Bus

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

eventBus.trigger('m:updated') // 触发事件
eventBus.on('m:updated', () => { console.log('here') }) '监听事件,听到后执行函数'

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

表驱动法是一种编程模式,从表(哈希表)里面查找信息而不是使用逻辑语句(if…else…switch,可以减少重复代码,只将重要的信息放在表里,然后利用表来编程,与逻辑语句相比较有着更稳定的复杂度。

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

使用表驱动取出一个时间的哈希表,清晰的分明了数据和逻辑。
events:{
    'click #aa1':'add',
    'click #minus1':'minus',
    'click #mul2':'mul',
    'click #divide2':'div'
},
add(){
    m.update( data: {n:m.data.n +1})
},
minus(){
    m.update( data:{n:m.data.n -1})
},
mul(){
    m.update( data: {n:m.data.n *2})
},
div(){
    m.update(data: {n:m.data.n /2})
}

四、浅谈对模块化的理解

模块化是将代码封装起来放在独立的模块中,只留下必要的接口方便供给他人使用。

为什么要模块化?

1. 维护性高,它的每个封装模块都是独立的。
2. 需要改编或提出其他需求,不会影响其他文件内容。
3. 复用性高,一个封装的模块能够被多次调用,省去重复编写时间。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • MVC 三个对象分别做什么 M : Model数据模型 负责操作所有数据V :View视图 负责所有界面C :Co...
    卢卢2020阅读 208评论 0 0
  • 一、MVC是什么? MVC是一种设计模式(那设计模式又是什么呢?简单粗暴的说好用的东西就是设计模式),MVC能够使...
    2b61575c37fd阅读 236评论 0 0
  • 一、MVC是什么? MVC是一种设计模式(那设计模式又是什么呢?简单粗暴的说好用的东西就是设计模式),MVC能够使...
    浪味仙儿啊阅读 343评论 0 2
  • 1MVC 三个对象分别做什么,给出伪代码示例 M-Model (数据模型),负责操作所有数据. V-View (视...
    lin_lilili阅读 205评论 0 0
  • 【目录】 一、MVC 三个对象分别做什么二、EventBus 有哪些 API,是做什么用的三、表驱动编程是做什么的...
    云卷云舒听雨声阅读 433评论 0 0