结合个人理解,说一下MVC的概念,欢迎指正
目标
MVC是一种设计模式,核心目标是实现model和view的解耦
概念
- Model表示数据,Model本身不关心数据的来源和数据改变带来的VIew变化
- View表示视图,在Web中,View就是页面展示内容,View监视Model,随Model变化展示相应的内容
- Controller负责响应视图的变化,并对Model做相应的修改
- User能看到View的输出,也能对View做输入,从而触发Controller的响应
- MVC所有通信都是单向的。用户操作 -> View (负责接受用户的输入操作) -> Controller(业务逻辑处理)-> Model(数据持久化)-> View(将结果通过View反馈给用户)
解耦
- View不关心Model的实现,只对Model的当前值作出视图变化
- View也无需关心Controller的实现,对于同一个用户输入,不同的Controller实现可以有不同的响应逻辑,从而达到不同的业务目标
实现
- 原生的View实现是直接操作HTML,辅助以各种UI库。目前一般认为,React是实现View层的一个库
- Model对JS维护的数据对象,要实现View对Model的监听一般需要引入一个观察者工具(ES6的Proxy也可以)。目前常见的Model库是Mobx,不仅能管理数据,还实现了观察者模式,自带数据观察能力
- Controller的核心是根据业务逻辑实现对输入的响应,在实现上可以尽量创建独立的Controller文件来实现这些业务逻辑,做到和View、Model的解耦