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