JavaScript的MVC是什么?
MVC模式(Model–view–controller)是一种设计模式(或者软件架构),把系统分为三个基本部分:
- 模型(Model):只处理有关数据的代码,如与服务器交互数据、增删改查数据
- 视图(View):负责用户界面,如渲染HTML渲染、管理html
- 控制器(Controller):控制其他流程,但也可以合并M和V。如事件绑定操作、初始化
伪代码如下
class Model{
data//保存数据
create(){
//增
}
remove(){
//删
}
update(){
//改
}
get(){
//查
}
}
class View {
elements//管理数据
html//管理html内容
render(){
//负责渲染画面
}
}
class Controller(){
init(){
//初始化相关数据
}
events//用户操作的事件
bindEvent(){
//绑定事件,响应事件
}
}
EventBus
EventBus是一种设计模式和框架,主要用于组件/对象间的通信的优化简化。
可以实现M和V之间的通信,M更新数据后可以触发一个函数告诉C更新了,然后就会渲染一次页面。
伪代码
class EventBus {
on(){
//监听用户在视图V上进行操作
}
trigger(){
//用户的操作会触发一些更改,将这些更改应用到模拟M上
}
off(){
//不再监听用户在视图V上进行的某项操作
}
}
表驱动编程
是一种编程模式,即从表里查找信息而不使用逻辑用语。通俗点就是从表里查询信息来代替逻辑语句(如if,case等)。
当代码里为了实现一个功能或者计算一个数值而出现大量的if和else时,可以考虑使用表驱动编程。
伪代码如下:计算一个月的天数
//不使用表驱动编程
if(month = 1){
day = 31
}else if(month = 2){
day = 28
}else if(month = 3){
day = 31
}else if(month = 4){
day = 30
} else if
...
else (month = 12){
day = 31`
}
//使用表驱动编程
daysPerMonth = array(31,28,31,30,31,30,31,31,30,31,30,31);
days = daysPerMonth[month - 1]
表驱动主要意义是剥离了逻辑和数据,使得程序中的 逻辑和数据一目了然。
模块化的理解
什么是模块化?
- 将一个复杂的程序依据一定的规则(规范)封装成几个块(文件),并进行组合在一起。
- 块的内部数据与实现是私有的,只是想外部暴露一些接口(方法)与外部其它模块通信。
好处
- 避免命名冲突(减少命名空间污染)
- 更好的分离,按需加载
- 更高的复用性
- 更高的维护性