在过去的几天里,我一直在研究在NodeJS中使用控制器和路由的最佳实践。我想拆分我的控制器,模型,中间件和路线,而不是有一个非常杂乱的路线页面。
最后我想出了一个有效的解决方案,我希望你的输入是他们更有效的方法吗?我觉得现在这似乎有点基础,请提出问题。
目录结构
MacBook-Pro:v1 MacPlusADay$ tree
.
├── app.js
├── bin
│ └── www
├── controllers
│ ├── index.js
│ └── user.js
├── middlewares
├── models
├── npm-debug.log
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
│ └── style.css
├── routes
│ ├── index.js
│ └── users.js
└── views
├── error.jade
├── index.jade
└── layout.jade
app.js 我正在使用此方法将所有路径文件包含到app.js文件中,我觉得这样更容易,因此必须单独包含每个单独的路径文件。
var normalizedPath = require("path").join(__dirname, "routes");
require("fs").readdirSync(normalizedPath).forEach(function(file) {
app.use('/', require("./routes/" + file));
});
routes / index.js 我已经分离了每个路由类,其中大多数功能都在我的控制器类中运行。这些路径文件可以有多个,例如一个用户,一个用于帖子。
var express = require('express');
var router = express.Router();
var indexController = require('../controllers/index');
router.get('/', indexController.getIndex);
module.exports = router;
controllers / index.js 我已将功能分离为模块导出,以便于编辑。
module.exports = {
//GET / index page
getIndex: function(req, res, next) {
res.render('index', {
title: 'Express2'
});
}
};