3

我正在重构一个大型 javascript 代码库以使用 RequireJS。不幸的是,我正在处理的许多文件都不是面向对象的,并且如果不进行重大修改就无法返回对象。有没有更有效的方法让“依赖”模块访问模块中包含的函数和变量(不返回对象)?

我已经阅读了有关使用导出语法来定义模块的信息,但目前还不清楚这是否是针对这种情况的有效解决方案。

4

1 回答 1

4

在定义的模块中,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/

希望这能澄清一点!

于 2013-06-14T04:29:38.283 回答