javascript的子类node.js表示方法来添加常见的function?
对不起,在这里还是比较新的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%的满意,而且还没有理解如何使这个更好。 有没有什么方法来扩展现有的类(在这个例子中表示应用程序)让我做一些事情:
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(); });
所有这些处理函数仍在执行那个“通用”代码?
谢谢!
像这样的东西可以工作:
function install(urlscheme, method, specific_task) { function handler(res, resp) { try { auth_request(req); // throws on failure validate_url_params(req); // throws on failure common_tasks(); specific_task(); } 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[method](urlscheme,handler); // app.post(), app.get(), etc. }; install("urlscheme1","get", do_something_ABC ); install("urlscheme1","post", do_something_DEF ); install("urlscheme1","put", do_something_GHI );
- 如何使用passport-spotify将用户redirect到上一页
- 如何从Node.js / Express中的请求中检索实体正文(针对CSP违规报告)?
- session.socket.io错误:无法通过键查找会话:connect.sid
- 使用expressionangularJs和mongoDB但ngResourceangular度不加载
- EJS Node.JS Express – 超过1个参数的URL时的CSSpath问题
- Express(node.js)使用HTTPS和HTTP
- 即使用户重新加载页面,如何保持function运行
- 无法find.ejs模板中的href和src属性
- app.post和app.use在节点expression有什么不同?