2014-10-17 89 views
0

有一個代碼(模塊模塊1,模塊2和單詞數被同時加載):如何在RequireJS中結合不同的模塊加載方式?

define(['module1', 'module2', 'module3'], function (module1, module2, module3) { 
    return { /* ... */ }; 
}); 

還有另外一個(模塊1和模塊2被裝載一個又一個單詞數是按需加載,動態地) :

define(function (require) { 
    var module1 = require('module1'); 
    var module2 = require('module2'); 
    return { 
     loadModule3: function() { 
      var module3 = require('module3'); 
     } 
    }; 
}); 

如何可以如在第一實施例的同時結合這兩種方法,使模塊1和2至負載,並且單詞數,以如在第二示例動態加載(但不產生附加的模塊) ?

回答

1

第二個示例不像您想象的那樣工作。 define(function(require) { ... })語法只是一個syntactic sugar,它基本上被轉換爲類似於第一個示例的異步調用,在模塊函數執行之前並行加載全部三個所需的模塊。

如果你真的打算強制執行的加載順序,你會去是這樣的:

define(function (require) { 
    // these two modules will be loaded in parallel 
    var module1 = require("module1"); 
    var module2 = require("module2"); 
    return { 
     loadModule3: function() { 
      // this module will be loaded "on-demand", when `loadModule3` is called 
      require(["module3"], function(module3) { 
       // here modules 1,2 and 3 are available 
      }); 
     } 
    }; 
}); 

請注意,你所謂的「按需」裝載將確保「單詞數」可裏面的回調函數,那麼依賴於module3的代碼路徑應該從那裏開始。

相關問題