什么是MVC
MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间。
Express的MVC项目结构
以下是我的Express MVC的目录结构
/app
/Controllers
UserController.js
/Models
UserModel.js
/Routes
index.js
user.js
/Services
UserService.js
/bin
www
/config
config.js
db.js
/public
/stylesheets
style.css
/view
index.jade
app.js
app.js为入口文件。
view文件夹下存放模板文件。
public文件夹用于存放静态资源文件。
config文件夹下存放了一个config.js,用于存放数据库的配置及其他的一些配置。
app文件夹下的Controllers存放所有的控制器。 Routes存放路由文件。 Service层处理业务逻辑。 Model层存放各个模型。
有的同学将Route理解为Controller,但是我为什么Route和Controller独立成两个文件夹呢,我是想在Route中统一管理路由文件,调用相关的Controller,在Controller中对数据做一些校验,通过校验后在Service层中进行逻辑方面的处理,最后调用Model返回相关的数据渲染到View层。
数据库我使用的是mysql,orm工具使用的是node-orm2,并使用的tj大神的co库。
如有不对的地方,请大神指正!
github地址: demo 如果感觉对您有帮助的话,请留下你的star哈~
和我之前弄的差不多: https://github.com/ekoneko/node-server-seed 不过我把 routes 都丢一个文件里了, 分开放总觉得找起来麻烦… (补充个真实项目的路由: 这里, 放一个文件里鉴权啥的看起来也直观些>.<) 现在基本上也不需要 views 了吧, 大部分项目都是前后端分离了
@ekoneko 可能是习惯问题吧,哈哈,路由我还是喜欢按照模块分出来 views的话就算是前后端分离的,像Vue、React,也得留一个views里也得留一个index,你说是吧~~~
要我说根本不需要路由,控制器即路由,可以参考一下 Cool-Node 的设计。