Express的MVC项目结构
发布于 6 年前 作者 junhaotong 4728 次浏览 来自 分享

什么是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哈~

5 回复

和我之前弄的差不多: https://github.com/ekoneko/node-server-seed 不过我把 routes 都丢一个文件里了, 分开放总觉得找起来麻烦… (补充个真实项目的路由: 这里, 放一个文件里鉴权啥的看起来也直观些>.<) 现在基本上也不需要 views 了吧, 大部分项目都是前后端分离了

@ekoneko 可能是习惯问题吧,哈哈,路由我还是喜欢按照模块分出来 views的话就算是前后端分离的,像Vue、React,也得留一个views里也得留一个index,你说是吧~~~

要我说根本不需要路由,控制器即路由,可以参考一下 Cool-Node 的设计。

@junhaotong

views的话就算是前后端分离的,像Vue、React,也得留一个views里也得留一个index

我一般不这么做, 直接分两个项目

@ekoneko 是的,能拆就拆

来自酷炫的 CNodeMD

回到顶部