requirejs再次执行require模块

时间:2013-01-22 15:03:51

标签: requirejs

f.e。我有:

require( ['module1'], function( module1_callback){
//callback_1 after code is loaded
} );

和module1.js

define( ['module2'], function(module2_callback)
{
    //function_1 to perform something
    return 'something';
});

我需要module1按需,但每次我需要运行function_1时,我需要运行该模块, 在这种情况下,module1中的function_1仅在第一次加载时执行,但每次需要module1时我都需要该例程。只返回回调执行

2 个答案:

答案 0 :(得分:2)

这不是requirejs的工作方式。但是你可以返回一个能执行某些操作的函数然后返回一些东西:

define( ['module2'], function(module2_callback) {
  return function() { 
    //to perform something
    return 'something';
  }
});

并在你的基础模块中:

require( ['module1'], function( module1_callback){
   var something = module1_callback();
});

答案 1 :(得分:-2)

检索函数会带来更多复杂性,并且在某些情况下无法使用主干插件和循环依赖关系,特别是在大页面应用程序中,页面的某些部分需要从头开始重新初始化, 我最终使用魔术模块

https://github.com/jrburke/requirejs/wiki/Differences-between-the-simplified-CommonJS-wrapper-and-standard-AMD-define#wiki-magic

undef

define( ['module2', 'module'], function(module2_callback) {
     //push module id into global array 
     window.undefArr.push(module);
    //all code here will be executed on every require
});

//before require undef modules
//here you can control which modules undef which to leave in memory
//based on module properties like path, name, status etc.
_.each( window.undefArr, function(mod){
   requirejs.undef(mod.id);
});
//init undefArr
undefArr = [];
require( ['module1']);