如何使用 requireJS 的多功能模块

How to use multi-function modules with requireJS

我是一名 Java 程序员,正在尝试将一些 Applet 转换为 JavaScript。我有一个案例,里面有很多小的 Java 类,它们有一个连贯的设计,如果可能的话,我想保留在 JavaScript 中。 RequireJS 似乎是保持模块化的好方法。

然而,我看到的所有 requireJS 教程都将模块视为只有一个功能,这只适用于我的几个 Java 类。例如,this tutorial 将模块 purchase.js 定义为具有单个函数 purchaseProduct()

define(["credits","products"], function(credits,products) {

  console.log("Function : purchaseProduct");

  return {
    purchaseProduct: function() {

      var credit = credits.getCredits();
      if(credit > 0){
        products.reserveProduct();
        return true;
      }
      return false;
    }
  }
});

有没有办法以这种方式允许每个模块有多个功能?在我看来,一个模块不一定只是一个功能。

或者 RequireJS 是错误的树,为了保留我来自 Java 的模块化设计而咆哮?

编辑

我在 https://gist.github.com/jonnyreeves/2474026 and https://github.com/volojs/create-template

找到了一组更有用的示例,用于使用 requireJS 从 Java 过渡到 JS

只需为您的对象添加更多功能return:

return {
  purchaseProduct: function() {
      // ...
  },
  somethingElse: function () {
      // ...
  }
}

如果您 return this 作为模块的值,您将拥有一个导出两个函数 purchaseProductsomethingElse.

的模块

是的,有办法,而且很简单。

看,您返回的(模块)只是一个对象。在您的代码中,此对象有 1 个 属性 (purchaseProduct),但它可以有任意多个。而且它们也不一定都是函数:

return {
  purchaseProduct: function () {/*...*/},
  returnProduct: function () {/*...*/},
  discountLevel: 0.25
};