我已经通过以下方式表达了与straitfort路径处理的应用程序:
app.route('/').get(function(req, res, next) {
// handling code;
});
app.route('/account').get(function(req, res, next) {
// handling code;
});
app.route('/profile').get(function(req, res, next) {
// handling code;
});
现在我将所有代码放在路由处理程序中,但我想尝试将其委托给某些类,如下所示。
app.route('/').get(function(req, res, next) {
new IndexPageController().get(req, res, next);
});
app.route('/account').get(function(req, res, next) {
new AccountPageController().get(req, res, next);
});
app.route('/profile').get(function(req, res, next) {
new ProfilePageController().get(req, res, next);
});
那么你对上面的方法有什么看法呢?你知道更好吗?
答案 0 :(得分:1)
正如您在Express Response documentation中看到的那样 - 响应(req
)可以通过几种方法向客户端发送信息。最简单的方法是使用req.render
,如:
// send the rendered view to the client
res.render('index');
知道这意味着你可以在另一个函数中做任何你想做的事情,最后只需调用res.render
(或任何其他向客户端发送信息的方法)。例如:
app.route('/').get(function(req, res, next) {
ndexPageController().get(req, res, next);
});
// in your IndexPageController:
function IndexPageController() {
function get(req, res, next) {
doSomeDatabaseCall(function(results) {
res.render('page', results);
}
}
return {
get: get
}
}
// actually instantiate it here and so module.exports
// will be equal to { get: get } with a reference to the real get method
// this way each time you require('IndexPageController') you won't
// create new instance, but rather user the already created one
// and just call a method on it.
module.exports = new IndexPageController();
对此没有严格的处理方法。您可以传递响应,其他人可以调用渲染。或者你可以等待另一件事(比如db调用),然后调用render。一切都取决于你 - 你只需要以某种方式向客户发送信息:)