How to define a module in the global environment while respecting AMD convention?

StackOverflow https://stackoverflow.com/questions/13046763

  •  14-07-2021
  •  | 
  •  

Question

I'm building a project in JavaScript, and I'd like to respect the AMD convention, but I need my project to be available from the global environment (just by adding it's name).

Dojo is the perfect example since it's exactly what I want : valid AMD, but Dojo is available from the global env. I tried to look at their source, but didn't find where they define Dojo.

So far, the only solution I came up with is this :

project.js :

var Project = {
    // some stuffs in there
};

module.js :

require(['project'], function () {
    Project.Module = {
        // some stuffs in there
    };
});

I know it's not the best way to do it, and I believe module.js should return {}, not define it.

What is the best way?

Était-ce utile?

La solution

I think a good option would be to check for define and if it is available define your project as a module.

if ( typeof define === "function"){
  define('project', [], function(){ return project; })
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top