1、MVC 三个对象分别做什么,给出伪代码示例?
MVC是什么?
每个模块都可以写成三个对象,分别是M、V、C
- M-Model(数据模型)负责操作所有数据
- V-View(视图)负责所有UI界面
- C-Controller(控制器)负责其他
M-Model(数据模型):
const m = {
get() {
return parseFloat(localStorage.getItem('n'))
},
set(n) {
localStorage.setItem('n', n)
}
}
V-View(视图):
const v = {
el: null,
// 初始化html
html: `代码`
,
init(container) {
v.el = $(container)
},
render(n) {}
C-Controller(控制器):
const c = {
init(container) {})
},
events: { 事件},
add() {详细执行},
minus() {详细执行},
mul() {详细执行},
div() {详细执行},
autoBindEvents() {逻辑}
}
}
2、EventBus 有哪些 API,是做什么用的,给出伪代码示例
EventBus 基本的 API 有 on (监听事件), trigger (触发事件), off (取消监听)方法。
用于模块间的通讯, view 组件层面,父子组件、兄弟组件通信都可以使 eventbus 处理
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)
}
}
3、表驱动编程是做什么的
表驱动法,又称之为表驱动、表驱动方法。 “表”是几乎所有数据结构课本都要讨论的非常有用的数据结构。表驱动方法出于特定的目的来使用表,程序员们经常谈到“表驱动”方法,但是课本中却从未提到过什么是"表驱动"方法。
表驱动方法是一种使你可以在表中查找信息,而不必用很多的逻辑语句(if或Case)来把它们找出来的方法。事实上,任何信息都可以通过表来挑选。在简单的情况下,逻辑语句往往更简单而且更直接。但随着逻辑链的复杂,表就变得越来越富有吸引力了。
在JS中,表就是指的哈希表结构,使用表驱动编程,能使重复冗余的代码变的稳定简洁。
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)
})
}
4、我是如何理解模块化的
什么是模块化?
-
模块化就是为了减少系统耦合度,提高高内聚,减少资源循环依赖,增强系统框架设计。
-
让开发者便于维护,同时也让逻辑相同的部分可复用
-
模块化开发:针对js、css,以功能或业务为单元组织代码。js方面解决独立作用域、依赖管理、
api暴露、按需加载与执行、安全合并等问题,css方面解决依赖管理、组件内部样式管理等问题。任何事物都有一个过程,那么模块化的过程通俗点讲就是:
模块化的过程就是:
- 1、拆分
将整个系统按功能,格式,加载顺序,继承关系分割为一个一个单独的部分.
注意:拆分的粒度问题,可复用问题,效率问题.如何这些问题处理的不好,就有可能出现不想要的后果。- 2、归纳
将功能或特征相似的部分组合在一起,组成一个资源块.- 3、总结
将每个资源块按找需求,功能场景以及目录约束放到固定的地方以供调用.
-
模块化的好处:
-
1. 避免变量污染,命名冲突 -
1. 提高代码复用率 -
1. 提高维护性 -
1. 依赖关系的管理