2013-06-12 34 views
0

我有RequireJS实现罚款,并基于Grunt的构建过程,它是通过r.js优化所有的JS文件应用程序到一个文件,这也是工作正常。我所有的应用程序文件都被连接成一个大的JS文件,以实现高效的生产部署。 现在我有以下要求: 我需要为requirejs编写一个插件,在构建过程中不会加载(不包括文件)到优化文件中,但需要时需要: 我的代码中的含义我得:RequireJS插件,根据需要加载文件

var myObj = require("myplugIn!jsFile"); 

那么到底什么时候这条线运行后,会在运行2个选项:

  1. 在构建过程中,该文件不包括在优化文件
  2. 应用程序正在运行,它将请求在dema上的文件ND。

我写了下面的插件,但不工作:

define(function() { 
"use strict"; 
return { 
    load : function (name, req, onload, config) { 
     // we go inside here we are running the application not in build process 
     if (!config.isBuild) { 
      req([name], function() { 
        onload(arguments[0]); 
       });     
     } 
    } 
}; 
}); 

什么,我在这里失踪。 先进的感谢

回答

2

在你的构建配置中,你可以排除你不想捆绑的文件。在需要时,它们仍将按需加载。你也可以做这样的事情:

define(function(){ 
    // module code... 

    if (condition){ 
     require(['mymodule'], function() { 
      // execute when mymodule has loaded. 
     }); 
    } 

}): 

这样,只有当条件满足mymodule将被载入。只有一次,如果你在其他地方使用相同的模块依赖项,它将返回加载的模块。

0

这是更简单的,我不过,如果可以帮助别人,我张贴的解决方案,我创建了一个插件,在构建过程中任何回报,并在运行时,返回所需的文件,希望可以帮助别人。

define(function() { 
"use strict"; 

return { 
    load : function (name, req, onload, config) { 
     if (config.isBuild) { 
      onload(null); 
     } else { 
      req([name], function() { 
       onload(arguments[0]); 
      }); 
     } 
    } 
}; 

});