Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Selectively loading AMD modules using requirejs

I'm having a use case where I've to load AMD modules depending on some condition in order to define another module using requirejs.

define(['module1'],
    function(module1)
    {
      /*some code*/

      if (condition1) {
        require(['module2'],
            function()
            {
                /*some code*/
            }
        )        
      }
      else {
         require(['module3'],
            function()
            {
               /*some code*/
            }
        )     
    }
    return someObject;
    });

I came across this question and got confused with global and local require.
Is the above approach correct ?

like image 859
bitsbuffer Avatar asked Jul 04 '26 19:07

bitsbuffer


1 Answers

You should use the 'local' require. The local require will make sure modules are resolved relative to the 'parent' module,

define(["require", "module1"], function(require, module1) {
    require(['./relative/to/parent/not/necessarily/relative/to/baseUrl'], ...);

and that URLs are also resolved relative to the 'parent' module.

define(["require", "module1"], function(require, module1) {
    require.toUrl('./relative/to/parent/not/necessarily/relative/to/baseUrl')
like image 111
Paul Grime Avatar answered Jul 07 '26 08:07

Paul Grime