如何委托快递中的路线处理?
How to delegate route processing in express?
我有 expressjs 应用程序,其 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;
});
现在我将所有代码都放在路由处理程序中,但我想尝试将其委托给某些 class,如下所示。
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);
});
那么您对上述方法有何看法,也许您知道更好的方法?
正如您在 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。一切由你决定——你只需要以某种方式将信息发送给客户端:)
我有 expressjs 应用程序,其 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;
});
现在我将所有代码都放在路由处理程序中,但我想尝试将其委托给某些 class,如下所示。
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);
});
那么您对上述方法有何看法,也许您知道更好的方法?
正如您在 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。一切由你决定——你只需要以某种方式将信息发送给客户端:)