【发布时间】:2011-06-08 04:23:17
【问题描述】:
抱歉,这里的 JavaScript 还是相当新的,所以希望这个问题不会太令人尴尬,但是:
我发现我在 node.js (express) 中按照以下几行编写了很多代码:
app.get("urlscheme1", function (res, resp) {
try {
auth_request(req); // throws on failure
validate_url_params(req); // throws on failure
common_tasks();
specific_taskABC();
} catch (e) {
if (e.error == "auth") {
resp.send(....);
} else if (e.error == "url_scheme") {
resp.send(....);
} else {
resp.send(translate_error(e), code_for_error(e)):
}
}
});
app.put("urlscheme1", function (res, resp) {
try {
auth_request(req); // throws on failure
validate_url_params(req); // throws on failure
common_tasks();
specific_taskDEF();
} catch (e) {
if (e.error == "auth") {
resp.send(....);
} else if (e.error == "url_scheme") {
resp.send(....);
} else {
resp.send(translate_error(e), code_for_error(e)):
}
}
});
app.post("urlscheme1", function (res, resp) {
try {
auth_request(req); // throws on failure
validate_url_params(req); // throws on failure
common_tasks();
specific_taskGHI();
} catch (e) {
if (e.error == "auth") {
resp.send(....);
} else if (e.error == "url_scheme") {
resp.send(....);
} else {
resp.send(translate_error(e), code_for_error(e)):
}
}
});
这似乎非常浪费。但是,我对 JS 中的所有 prototype 和“子类化”语法/语义并不是 100% 满意,还不足以理解如何让它变得更好。有没有办法扩展一个现有的类(在这个实例中是 express 应用程序)让我做类似的事情:
app.get("urlscheme1", function(res, resp) {
do_something_ABC();
});
app.get("urlscheme1", function(res, resp) {
do_something_DEF();
});
app.get("urlscheme1", function(res, resp) {
do_something_GHI();
});
所有这些处理函数仍在哪里执行“通用”代码?
谢谢!
【问题讨论】:
-
听起来像是middleware 的工作!
-
哦,哇,我没有看到中间件的那部分。非常棒,是的。谢谢!
标签: javascript oop node.js express