1.MVC 三个对象分别做什么,给出伪代码示例
- M:model(模型) 负责操作数据与服务器的交互,将请求到的数据传给control
- V:View (视图) 负责所有UI界面,比如el,templete,render
- C:controller(控制器)负责其他,比如初始化和事件,负责监听和处理View事件,并更新和调用 Model,负责监听Model数据变化,并更新View
/** 模擬 Model, View, Controller */
var M = {}, V = {}, C = {};
/** Model 負責存放資料 */
M.data = "hello world";
/** View 負責將資料輸出到螢幕上 */
V.render = (M) => { alert(M.data); }
/** Controller 作為一個 M 和 V 的橋樑 */
C.handleOnload = () => { V.render(M); }
/** 在網頁讀取的時候呼叫 Controller */
window.onload = C.handleOnload;
const m={
data={},
create(){},
delete(){},
update(){},
get(){}
}
const v={
el:null,
html:`代码`,
init(container){
v.el=$(container)
},
render(n){}
}
const c={
init(constainer){}
events:{事件}
add(){执行}
minus(){执行}
update(){执行}
get(){执行}
autoBindEvents(){逻辑}
}
2.EventBus 有哪些 API,是做什么用的,给出伪代码示例
_self.getEventBus
方法:getEventBus:function(){}
描述:直接返回前端EventBus对象,不推荐直接使用。
_self.subscribeEvent
方法:subscribeEvent:function(event,fn,pointcut){}
描述:注册事件,并指定实现方法和插入点
参数:event:字符串形式事件名,命名规则为Event或ActionEvent结尾
fn:实现方法
插入点类型:after、overwrite、before
_self.unSubscribeEvent
方法:unSubscribeEvent:function(event){}
描述:取消注册事件
参数:event:字符串形式事件名,命名规则为Event或ActionEvent结尾
_self.fireEvent
方法:fireEvent:function(event){}
描述:触发某个具体事件,执行这个事件对于的实现方法队列
参数:event:字符串形式事件名,命名规则为Event或ActionEvent结尾
其他参数:可以增加一些后续参数
Handler实现说明:
参数:接收fireEvent方法传递过来的参数
特殊参数e:只有按钮绑定的页面功能才有值,手工调用不会有e的。页面功能代码生成时,默认会生成这个e,值为jquery.event
返回值:无返回值的处理,只能通过返回值确定是否继续执行后续的方法队列
true/无:继续执行后续的实现方法队列
false:停止执行后续的实现方法队列
其他:返回true
Handle队列中数据的传递:只能利用页面的全局变量,本身没有提供处理机制
3.表驱动编程是做什么的
Table-Driven Approach
解决if else面对多种情况的情形,以表的形式进行获取数据,通过下标索引来查
methods{
add(){执行}
delete(){执行}
minus(){执行}
...
}
4.我是如何理解模块化的
模块化就是把一个模块的代码放在一个文件夹里,再进行引入,简化了代码之间的影响
let string=`内容`
import default string//导出
import $ from `string`//引入