使用requirejs选择性加载AMD模块

时间:2013-04-11 06:15:34

标签: javascript requirejs amd

我有一个用例,我根据某些条件加载AMD模块,以便使用requirejs定义另一个模块。

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

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

我遇到了this问题,并对全球和本地require感到困惑 上述方法是否正确?

1 个答案:

答案 0 :(得分:3)

您应该使用“本地”require。本地需求将确保模块相对于“父”模块解析,

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

并且相对于“父”模块也解析了URL。

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