背景
MVC是一种架构设计模式,它通过关注点分离鼓励改进应用程序组织。在过去,MVC被大量用于构建桌面和服务器端应用程序,如今Web应用程序的开发已经越来越向传统应用软件开发靠拢,Web和应用之间的界限也进一步模糊。传统编程语言中的设计模式也在慢慢地融入Web前端开发。由于前端开发的环境特性,在经典MVC模式上也引申出了诸多MV模式,被实现到各个Javascript框架中都有多少的衍变。
MVC含义
MVC包括三类对象,将他们分离以提高灵活性和复用性。
- 模型model用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法,会有一个或多个视图监听此模型。一旦模型的数据发生变化,模型将通知有关的视图。
- 视图view是它在屏幕上的表示,描绘的是model的当前状态。当模型的数据发生变化,视图相应地得到刷新自己的机会。
- 控制器controller定义用户界面对用户输入的响应方式,起到不同层面间的组织作用,用于控制应用程序的流程,它处理用户的行为和数据model上的改变。
1.MVC 三个对象分别做什么,给出伪代码示例
const m = {
data: {},
create() {增 },
delete() { 删},
update() {改},
get() {查}
}
const v = {
el: null,
html: `代码`
,
init(container) {
v.el = $(container)
},
render(n) { }
}
- C: Controller(控制器), 负责除了M和V的事情的其他事情.
const c = {
init(container) {})
},
events: { 事件},
add() {详细执行},
minus() {详细执行},
mul() {详细执行},
div() {详细执行},
autoBindEvents() {逻辑}
}
}
2. EventBus 有哪些 API,是做什么用的,给出伪代码示例
?EventBus 基本的 ?API 有 ?on (监听事件), ?trigger (触发事件), ?off (取消监听)方法。
用于模块间的通讯, ?view 组件层面,父子组件、兄弟组件通信都可以使 ?eventbus 处理
constructor(){
this._eventBus =$(window)
}
on(eventName, fn){
return this._eventBus.on(eventName,fn)
}
trigger(eventName,data){
return this._trigger.tiggger(eventName,data)
}
off(eventName, fn){
return this._eventBus.off(eventName,fn)
}
}
export default EventBus
3. 什么是表驱动编程
表驱动法是一种编程模式(scheme)——从表里面查找信息而不使用逻辑语句(if和case)。事实上,凡是能通过逻辑语句来选择的事物,都可以通过查表来选择。对简单的情况而言,使用逻辑语句更为容易和直白。但随着逻辑链的越来越发杂,查表法也就愈发显得更具吸引力。
简单来说:解决if else面对多种情况的情形,以表的形式进行获取数据,通过下标索引来查
4. 如何理解模块化的
模块化就是把一个模块的代码放在一个文件夹里,再进行引入,简化了代码之间的影响。
模块化的好处:
- 避免变量污染,命名冲突
- 提高代码复用率
- 提高维护性
- 依赖关系的管理
|