什么是MVC
MVC是一种架构设计模式,它通过关注点分离鼓励改进应用程序组织。
MVC包括三类对象,将他们分离以提高灵活性和复用性。
M—-Model(数据模型)负责操作所有数据
V—-View(识图)负责所有UI界面
C—-Controller(控制器)负责其他
MVC用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
MVC的优点
1.提升了代码的独立性,三个模块之间互相独立,改变其中一个不会对其他有个有影响
2.应用广,基本上我们写的项目都可以用MVC设计模式来写
3.多个 View 能共享一个 Model,提高了代码的可重用性
MVC示例
Model—-用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法,会有一个或多个视图监听此模型。一旦模型的数据发生变化,模型将通知有关的视图。
Model = {data : {需要用到的数据},create : {增数据},delete : {删数据},updata : {更新数据},get : {获取数据}}
View—-在屏幕上的表示,描绘的是model的当前状态。当模型的数据发生变化,视图相应地得到刷新自己的机会。
View = {el : null,html : ` `,init(){初始化页面},render(){渲染页面}}
Controller—-定义用户界面对用户输入的响应方式,起到不同层面间的组织作用,用于控制应用程序的流程,它处理用户的行为和数据model上的改变。
Controller = {init(){View.init()View初始化View.render()//第一次渲染event : {用哈希表记录}Controtller.autoBindEvents()//自动绑定事件}}
EventBus
EventBus是一种设计模式或框架,主要用于组件/对象间通信的优化简化。
EventBus中的三个APII:on,trigger,off。我们用例子来解释EventBus的用法
先引入EventBus
const eventBus = $(window)
然后用EventBus,假如EventBus.trigger被触发,那么就会通知EventBus.on,EventBus.on就会执行
EventBus.trigger('xxx')//事件触发EventBus.on('xxx',()=>{console.log('被执行')})//添加事件监听
这样就实现了组件/对象间通信
EventBus.off()//移除事件监听
表驱动编程
表驱动法,又称之为表驱动、表驱动方法。 “表”是几乎所有数据结构课本都要讨论的非常有用的数据结构。表驱动方法是一种使你可以在表中查找信息,而不必用很多的逻辑语句(if或Case)来把它们找出来的方法。事实上,任何信息都可以通过表来挑选。在简单的情况下,逻辑语句往往更简单而且更直接。但随着逻辑链的复杂,表就变得越来越富有吸引力了。
在JS中,常常使用哈希表来写数据
function weekday(day) { if(day&7===0){return '星期天';}else if(day%7===2){return '星期二';}else if(day%7===3){return '星期三';}else if(day%7===4){return '星期四';}else if(day%7===5){return '星期五';}else if(day%7===6){return '星期六';}}
看以上代码,用来非常多的if else逻辑语句,看起来就非常的繁琐,非常的不简洁。而我们细心观察就会发现其实每一个逻辑语句的操作逻辑是一样的,我们尝试把不同的地方用一个东西装起来,然后再根据不同的操作去去里面的值
function weekday (day){let weekdays = ['星期天','星期一','星期二','星期三','星期四','星期五','星期六']return weekdays[day%7]}
这就是表驱动编程,把重复代码中不重复的地方放进一个数组或者哈希表里面,然后取表里面的数据
模块化
我所理解的模块化将代码中具有明显特性的代码集中在一个地方,比如像MVC设计模式中,把负责所有UI界面的代码放在同一个对象里面组成View,这是模块化的体现。
模块化也可以理解为把负责一部分功能的代码独立成一个文件,比如我们把一个页面中不同的区域独立成各自的CSS,JS文件,各区域之间不互相污染,这也是一种模块化
总的来说,我觉得能让我们的代码分工更加清晰,是代码分块处理再用某种方式连接各个块的都属于模块化
