Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Returning a module in RequireJS

Tags:

requirejs

I'm refactoring a large javascript codebase to use RequireJS. Unfortunately, many of the files I'm dealing with are not object-oriented, and cannot return an object without significant modification. Is there a more efficient way to give 'dependent' modules access to the functions and variables contained in a module (without returning an object) ?

I have read about using the exports syntax for defining modules, but it is very unclear whether that would be a valid solution for this situation.

like image 935
gaplus Avatar asked Aug 01 '26 00:08

gaplus


1 Answers

In a defined module, the exports object is what gets exported from the module and passed to whatever module requires it.

Consider this:

define(["exports"], function(exports){
  exports.myCustomFunction = function(){};
  exports.myCustomObject = {};
  exports.myCustomVariable = true;
})

This module will place all the disparate functions and/or objects that you want made public onto the exports object. At this point RequireJS will use that exports object to pass to a module that requires it:

require(["nameOfCustomModule|filename"], function(myCustomModule){
  //evaluates to true
  console.log(myCustomModule.myCustomVariable);
})

Here's a simple fiddle. Just bring up your console and you will see the value logged there. http://jsfiddle.net/xeucv/

Hope this clears it up a bit!

like image 89
norepro Avatar answered Aug 03 '26 18:08

norepro



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!