节点.js路由继承

Node.js route inheritance

本文关键字:继承 路由 js 节点      更新时间:2023-09-26

我对node.js很陌生,特别是表达.js。我正在开发 express.js 应用程序来导出一些 rest apis,我发现我有很多 dup 代码,我想避免这个问题。我正在寻找最佳实践解决方案。这是我编造的例子:

// app/routes/category.js
exports.create = function (req, res) {
  categoryModel.create(someData, function (error, category) {
    if (Util.isError(error)) {
      res.send(400, error);
    } else {
      res.send(category);
    }
  });
};
// app/routes/product.js
exports.create = function (req, res) {
  productModel.create(someData, function (error, product) {
    if (Util.isError(error)) {
      res.send(400, error);
    } else {
      res.send(product);
    }
  });
};

您可以看到我的两个创建路线代码几乎相同,但只是型号不同(产品与类别),我的问题是:

1)有没有办法在node.js/express.js中进行继承?

2)有没有办法在node.js/express.js中做接口?

3)避免重复代码的最佳方法是什么?

4)我在想可以有父类,让类别和产品类都继承父类。我真的不知道应该如何在节点中完成它.js

我读了几本 node.js 的书,但我没有看到作者提到太多关于如何以正确或至少最佳实践构建应用程序的内容。

我读过关于原型.js,这是正确的道路吗?

任何想法和帮助将不胜感激!

不需要

继承(特别是因为处理程序必须是函数,所以我很难在这里看到如何使用继承)。您可以简单地创建一个函数生成器:

var generate_handler = function(model) {
  return function(req, res) {
    model.create(someData, function (error, obj) {
      if (Util.isError(error)) {
        res.send(400, error);
      } else {
        res.send(obj);
      }
    });
  };
};

然后你做

// app/routes/category.js
exports.create = generate_handler(categoryModel);
// app/routes/product.js
exports.create = generate_handler(productModel);