谈谈mvc这件事

1.MVC 三个对象分别做什么?

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

  • M-Model(数据模型)负责操作数据
  • V-View(视图)负责图形UI界面
  • C-Controller(控制器)负责操作。

var model = {
    data: null,
    init(){}
    fetch(){}
    save(){}
    update(){}
    delete(){}
}
view = {
    init(){}
    template:'<h1>hello</h1>'
}
controller = {
    view: null,
    model: null,
    init(view, model){
        this.view = view
        this.model = model
        this.bindEvents()
    }
    render(){
        this.view.querySelector('name').innerText = this.model.data.name
    },
    bindEvents(){}
}

复制代码

2.EventBus 有哪些 API,是做什么用的?

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

eventBus 监听 m:updated,当 m:updated 触发时,执行一些内容

eventBus.on('m:updated',()=>{
     v.render(m.data.n)
 })
复制代码

3.表驱动编程是做什么的?

表驱动编程,又称之为表驱动、表驱动法/表驱动方法。
“表”是几乎所有数据结构课本都要讨论的非常有用的数据结构。表驱动方法出于特定的目的来使用表,程序员们经常谈到“表驱动”方法,但是课本中却从未提到过什么是”表驱动”方法。表驱动方法是一种使你可以在表中查找信息,而不必用很多的逻辑语句(if或Case)来把它们找出来的方法。事实上,任何信息都可以通过表来挑选。在简单的情况下,逻辑语句往往更简单而且更直接。但随着逻辑链的复杂,表就变得越来越富有吸引力了,通过下面的这个例子大家就能知道什么是所谓的表驱动方法了。

//1.不使用表驱动,switch方式
let day = new Date().getDate()
console.log(typeof day)
switch (day){
    case 0:
        alert('今天是周日');
        break;
    case 1:
        alert('今天是周一');
        break;
    case 2:
        alert('今天是周二');
        break;
    case 3:
        alert('今天是周三');
        break;
    case 4:
        alert('今天是周四');
        break
    case 5:
        alert('今天是周五');
        break;
    case 6:
        alert('今天是周六');
        break;
}



//2.不使用表驱动,使用if(else)
let day = new Date().getDate()
if (day === 0) {
    alert('今天是周日');
} else if (day === 1) {
    alert('今天是周一');
} else if (day === 2) {
    alert('今天是周二');
} else if (day === 3) {
    alert('今天是周三');
} else if (day === 4) {
    alert('今天是周四');
} else if (day === 5) {
    alert('今天是周五');
} else if (day === 6) {
    alert('今天是周六');
}

//3.使用表驱动
const day = new Date().getDate()
const week = ['周日','周一','周二','周三','周四','周五','周六']
const dayNow = week[day]
alert(dayNow)//周二

复制代码

写文章的时候是周二,上面三种不同的方式结果都是一样的周二,在简单的情况下,逻辑语句往往更简单而且更直接。但随着逻辑链的复杂,表就变得越来越富有吸引力了,使用表驱动更有优势,代码行数更少。

4.我是如何理解模块化的?

模块化,主要是把相同功能的独立出来,然后再进行引用。引用的时候,不用关心内部,只需要知道功能直接可以使用,同时方便解耦,可以随时修改这个模块的功能,不影响其他的模块。

let string = `模块代码`
export defalut string//默认导出

import $ from string//需要的时候,直接导入模块
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享