如何使用requireJS的多功能模块

时间:2015-10-06 20:01:19

标签: javascript java requirejs modularity

我是一名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/2474026https://github.com/volojs/create-templateMaven Archetype Catalog plugin

上使用requireJS从Java转换到JS

2 个答案:

答案 0 :(得分:2)

是的,这是一种方式而且非常简单。

请注意,您返回的内容(模块)只是一个对象。在您的代码中,此对象有1个属性(purchaseProduct),但它可以包含您喜欢的数量。并且他们都不必担任以下职能:

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

答案 1 :(得分:1)

只需向返回的对象添加更多功能:

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

如果您将此作为模块的值返回,则您将拥有一个导出两个函数purchaseProductsomethingElse的模块。