MVC架构模式
- 在编程中MVC应该是无人不知的存在,概念介绍也非常多,M即Model,V即View,C即Controller分别对应我们的业务模型,用户界面和控制器。概念看起来很简单,然而使用起来又不知道哪里对应哪里,那么我们就从具体的业务来应用MVC架构模式理解MVC。
具体应用MVC工作
- MVC的理念大家很容易理解,如何实现MVC的核心我的理解是抽象和拆分,抽象帮助我们内聚功能,拆分帮助我们解耦,如果不能理解解耦和内聚,请先了解。并且在代码书写时View不需要拆分外,其他部分都需要进行拆分,所以代码书写时不仅仅只有Model,View,Controller还有很多其他部分。
-
在node开发中如何应用的MVC
-
拿到一个MVC项目我们先观察它的内容组成, 大概样式如下:
-
简单介绍下:
-
config配置文件,controllers控制器,db数据库,logs日志,middleware中间件,model模块,routes路由表,utils工具,app.js主文件
-
那么我们开始通过文件和文件夹来分析我们的MVC,首先可以看到一个app.js,很特别他作为一个单独的js文件存在于所有文件夹之外,可以得知这是我们的主文件,再来看一下它里面的内容
-
进入app.js
-
这里的express是node中常用的express框架,方便我们快速开发使用,app为约定变量名,创建一个对象,之后可以看到导入路由表,和挂载路由表的操作,最后是一个开启服务,因为express为第三方包,所以只有一个router是我们导入的模块,顾名思义router路由,我们使用路由的方式来拆分代码,路由和挂载的概念,你需要提前了解。路由挂载和中间件
-
很自然我们能够想到去查看router文件夹内容,在这里就开始我们的第一次拆分,从app.js中拆分出了路由表。
-
进入路由表
-
同样先观察路由表内容,创建router,导入控制器,导入中间件,router.get,导出router
-
终于看到我们熟悉的控制器了,还有一个中间件?至于.get不难理解get请求,那么这里需要注意,在路由表中我们只进行业务分配,如果还需进一步数据处理的话就通过一个路由级别的中间件来处理这个请求,再去执行接下来的handler行为,不可以在路由表中进行任何处理操作。
-
进入controllers
-
同样观察controllers内容,导入model,路由处理函数控制器!这里model也出现了,通过C来操作M的效果就这样实现了?
-
这里我们看到通过控制器只进行了一个await等待model函数处理和res.send返回数据,在这里比较重要的一点就是也不要在controllers中进行任何的操作处理,只处理该执行什么样的model和该返回什么样的数据,至于如何处理交给model就可以了。
-
进入model
-
我们观察到只有一个模型,还有exports的导出,看来是到底了,确实在MVC最后面应该是Model进行业务处理。
小结
- 这里面只有一个addUsers,但是可以继续进行模块的添加,例如exports.removeUser等等,那么在上面的操作中,就会进入用户操作的路由,再进行路由表路径分配到不同的控制器,再使用我们的removeUser这个模型来删除用户,最后通过控制器返回给客户端的一套流程就完成了。
其他文件介绍
- config配置文件:
- Config文件是通过各种程序使用的通用配置文件。它包含的bai设置和配置信息以及不同的程序可以以不同的格式存储这些数据。这些文件不应该手动打开,但它可以被保存在文本格式,并在文本编辑器查看。
- db数据库:
- 数据库文件存储,有我们的数据库创建和数据模型导出等
- logs日志:
- 记录一些用户信息,记录错误、性能分析、查看服务间的调用关系、记录时间等
- middleware中间件
- 处理业务需求的工具等
- utils工具
- 每个人为了方便编程自己书写的一些常用封装
总结
通过一个MVC的项目组成分析,来更加深入的了解MVC,但是肯定不止于次,如果你想更加深入的理解和使用MVC,仍然需要学习更多的内容,例如设计模式的结合使用,以及不同于MVC的MVVM和MVP之间相互的区别等