3

我对 node.js 非常陌生,特别是 express.js。我正在使用 express.js 应用程序来导出一些其余的 api,我发现我有很多 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)我在想有可能有父类并让类别和产品类都从父类继承。我真的不知道应该如何在 node.js 中完成

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

我阅读了有关 Prototype.js 的信息,这是正确的路径吗?

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

4

1 回答 1

4

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

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);
于 2013-09-05T07:10:09.273 回答