什么是MVC

MVC是一种架构设计模式,它通过关注点分离鼓励改进应用程序组织。
MVC包括三类对象,将他们分离以提高灵活性和复用性。
M—-Model(数据模型)负责操作所有数据
V—-View(识图)负责所有UI界面
C—-Controller(控制器)负责其他
MVC用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

MVC的优点

1.提升了代码的独立性,三个模块之间互相独立,改变其中一个不会对其他有个有影响
2.应用广,基本上我们写的项目都可以用MVC设计模式来写
3.多个 View 能共享一个 Model,提高了代码的可重用性

MVC示例

Model—-用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法,会有一个或多个视图监听此模型。一旦模型的数据发生变化,模型将通知有关的视图。

  1. Model = {
  2. data : {需要用到的数据},
  3. create : {增数据},
  4. delete : {删数据},
  5. updata : {更新数据},
  6. get : {获取数据}
  7. }

View—-在屏幕上的表示,描绘的是model的当前状态。当模型的数据发生变化,视图相应地得到刷新自己的机会。

  1. View = {
  2. el : null,
  3. html : ` `,
  4. init(){初始化页面},
  5. render(){渲染页面}
  6. }

Controller—-定义用户界面对用户输入的响应方式,起到不同层面间的组织作用,用于控制应用程序的流程,它处理用户的行为和数据model上的改变。

  1. Controller = {
  2. init(){
  3. View.init()View初始化
  4. View.render()//第一次渲染
  5. event : {用哈希表记录}
  6. Controtller.autoBindEvents()//自动绑定事件
  7. }
  8. }

EventBus

EventBus是一种设计模式或框架,主要用于组件/对象间通信的优化简化。
EventBus中的三个APII:on,trigger,off。我们用例子来解释EventBus的用法
先引入EventBus

  1. const eventBus = $(window)

然后用EventBus,假如EventBus.trigger被触发,那么就会通知EventBus.on,EventBus.on就会执行

  1. EventBus.trigger'xxx'//事件触发
  2. EventBus.on('xxx',()=>{console.log('被执行')})//添加事件监听

这样就实现了组件/对象间通信

  1. EventBus.off()//移除事件监听

表驱动编程

表驱动法,又称之为表驱动、表驱动方法。 “表”是几乎所有数据结构课本都要讨论的非常有用的数据结构。表驱动方法是一种使你可以在表中查找信息,而不必用很多的逻辑语句(if或Case)来把它们找出来的方法。事实上,任何信息都可以通过表来挑选。在简单的情况下,逻辑语句往往更简单而且更直接。但随着逻辑链的复杂,表就变得越来越富有吸引力了。
在JS中,常常使用哈希表来写数据

  1. function weekday(day) { if(day&7===0){
  2. return '星期天';
  3. }
  4. else if(day%7===2){
  5. return '星期二';
  6. }
  7. else if(day%7===3){
  8. return '星期三';
  9. }
  10. else if(day%7===4){
  11. return '星期四';
  12. }
  13. else if(day%7===5){
  14. return '星期五';
  15. }
  16. else if(day%7===6){
  17. return '星期六';
  18. }
  19. }

看以上代码,用来非常多的if else逻辑语句,看起来就非常的繁琐,非常的不简洁。而我们细心观察就会发现其实每一个逻辑语句的操作逻辑是一样的,我们尝试把不同的地方用一个东西装起来,然后再根据不同的操作去去里面的值

  1. function weekday (day){
  2. let weekdays = ['星期天','星期一','星期二','星期三','星期四','星期五','星期六']
  3. return weekdays[day%7]
  4. }

这就是表驱动编程,把重复代码中不重复的地方放进一个数组或者哈希表里面,然后取表里面的数据

模块化

我所理解的模块化将代码中具有明显特性的代码集中在一个地方,比如像MVC设计模式中,把负责所有UI界面的代码放在同一个对象里面组成View,这是模块化的体现。
模块化也可以理解为把负责一部分功能的代码独立成一个文件,比如我们把一个页面中不同的区域独立成各自的CSS,JS文件,各区域之间不互相污染,这也是一种模块化
总的来说,我觉得能让我们的代码分工更加清晰,是代码分块处理再用某种方式连接各个块的都属于模块化