Извините, я все еще довольно новичок в Javascript, поэтому надеюсь, что этот вопрос не слишком прост, но:
Я обнаружил, что пишу много кода в node.js (экспресс)по следующим направлениям:
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)):
}
}
});
Это кажется УЖАСНО расточительным.Но я не на 100% доволен всем синтаксисом / семантикой prototype
и «подклассом» в JS, пока недостаточно, чтобы понять, как сделать это лучше.Есть ли какой-нибудь способ расширить существующий класс (в данном случае это приложение 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();
});
, где все эти функции-обработчики все еще выполняют этот «общий» код?
Спасибо!