Christof
Christof

Reputation: 3927

requirejs: can I require a global runtime var?

I'm using requirejs in a somewhat special JS environment where an application provides a global singleton (I cannot change this fact, this isn't running in a typical browser environment). I am writing a sort of JS SDK for this application and want to provide various modules that use this global.

Can I wrap that global in a module somehow in order to require it from my modules? Something like

define([the_global_application], function(app)

Thanks for your thoughts on this.

Upvotes: 2

Views: 224

Answers (1)

Alessandro Vendruscolo
Alessandro Vendruscolo

Reputation: 14875

Yes, you just have to define it.

// mysingletonapp.js
// define the module for our global var
define(['list', 'any', 'dependency', 'here'], function (l, a, d, h) {
  return yourGlobalVariable;
});

(I don't think you'll have dependencies in there, since you're just wrapping a global var)

The you can use that module as usual:

require(['mysingletonapp'], function (app) {
  // do something cool
});

If you want to skip all this, you can use the shim property of RequireJS. You would just need to add this to your options file:

...
shim: {
        'globalApplication': {
            deps: ['underscore', 'jquery'], // again, you should not need them
            exports: 'yourGlobalVar'
        }
}
...

shims wrap libraries that don't support AMD, so to have this setting work, you would need a js for globalApplication. This isn't your case.

Upvotes: 1

Related Questions