假设我有这个代码来分隔expressjs中的路由:
module.exports = function(express,app,client) {
app.get('/', function(req,res,next) {
var query = 'SELECT * FROM users LIMIT 10';
var user = client.query(query, function (err, results, fields) {
res.render('index', {
title: 'test',
users: results
});
client.end();
});
});
}
并在app.js
:
require('./controllers/routes.js')(express,app,client);
1)如何以最佳方式将数据库查询分成新文件?
即使我将db逻辑分开,这个文件也会变得非常大。
2)分开路线的好方法是什么?也许单独的模块?然后在app.js
?
答案 0 :(得分:33)
这里有一个类似的问题,您应该阅读:How to structure a express.js application?
1)所有查询逻辑都应放在模型中(例如驻留在/ models中的模块)
2)将所有路线(控制器)分成模块(并将它们放在/路由中) 通过路线我的意思是: - “用户”路由的所有逻辑都进入/routes/users.js
尽量让你的应用程序成为MVC-ish。
上面的应用的小例子:
<强> app.js 强>
// configuration for express etc
require('./routes/index')(app)
<强>路由/ index.js 强>
var model = require("../models/users.js");
module.exports = function (app) {
app.get('/', function (req, res, next) {
model.get_recent(function (err, results) {
// do stuff with your results
res.render('index');
});
});
}
<强>模型/ users.js 强>
module.exports = {
get_recent: function(callback) {
var query = "SELECT * FROM users LIMIT 10";
database.query(query, callback);
}
}
答案 1 :(得分:5)
在expressjs下载包中,有一个名为“mvc”的文件夹。作者为微小而高效的mvc结构提供了一个很好的例子。通过代码,您将获得很多灵感。
答案 2 :(得分:1)
express-train怎么样?我最近一直在使用它,它适用于复杂的应用程序结构。