我正在重构一个大的JavaScript代码库来使用RequireJS。不幸的是,我正在处理的许多文件都不是面向对象的,并且在没有重大修改的情况下无法返回对象。是否有更有效的方法让“依赖”模块访问模块中包含的函数和变量(不返回对象)?
我已经阅读了有关使用exports语法定义模块的内容,但目前还不清楚这是否是针对这种情况的有效解决方案。
答案 0 :(得分:4)
在定义的模块中,exports
对象是从模块导出并传递给任何模块所需的对象。
考虑一下:
define(["exports"], function(exports){
exports.myCustomFunction = function(){};
exports.myCustomObject = {};
exports.myCustomVariable = true;
})
此模块会将您想要公开的所有不同功能和/或对象放在exports
对象上。
此时,RequireJS将使用该exports对象传递给需要它的模块:
require(["nameOfCustomModule|filename"], function(myCustomModule){
//evaluates to true
console.log(myCustomModule.myCustomVariable);
})
这是一个简单的小提琴。只需调出控制台,您就会看到其中记录的值。 http://jsfiddle.net/xeucv/
希望这有点清除它!