如何使用 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 作为模块的值,您将拥有一个导出两个函数 purchaseProduct
和 somethingElse
.
的模块
是的,有办法,而且很简单。
看,您返回的(模块)只是一个对象。在您的代码中,此对象有 1 个 属性 (purchaseProduct
),但它可以有任意多个。而且它们也不一定都是函数:
return {
purchaseProduct: function () {/*...*/},
returnProduct: function () {/*...*/},
discountLevel: 0.25
};
我是一名 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 作为模块的值,您将拥有一个导出两个函数 purchaseProduct
和 somethingElse
.
是的,有办法,而且很简单。
看,您返回的(模块)只是一个对象。在您的代码中,此对象有 1 个 属性 (purchaseProduct
),但它可以有任意多个。而且它们也不一定都是函数:
return {
purchaseProduct: function () {/*...*/},
returnProduct: function () {/*...*/},
discountLevel: 0.25
};