2013-06-03 40 views
1

在這個微小的示例應用程序中,爲什麼index-b.jsindex-c.js之前執行?在這個簡單的requirejs例子中,爲什麼不首先執行「c」?

由於index-cindex-a的依賴,並index-a是一組index-b之前加載,這在我看來,index-c應首先執行。

/* index.js */ 
define([ "./index-a", "./index-b" ], function(){  
    console.log("index executing");  
}); 

/* index-a.js */ 
define([ "./index-c" ], function(){  
    console.log("index-a executing");  
}); 

/* index-b.js */ 
define(function(){  
    console.log("index-b executing");  
}); 

/* index-c.js */ 
define(function(){  
    console.log("index-c executing");  
}); 

運行例如:http://fitzgeraldmedia.net/requirejs/index.html(檢查控制檯)

+1

這些模塊的負載是異步 –

回答

3

在index.js你定義()調用的模塊的順序並不意味着任何的同步相關性,所以index-a在索引-b之前並未真正「設置爲加載」。您在index.js中的define()調用只是簡單地說明回調函數中的代碼依賴於index-a和index-b。如果index-b依賴於index-a,則index-b應該在index()調用中將index-a列爲依賴項。

所以,你的index.js文件應該是這樣的:

define([ "./index-b" ], function(){ 

    console.log("index.js executing"); 
}); 

和您的索引文件b.js是這樣的:

define([ "./index-a" ], function(){ 

    console.log("index-b.js executing"); 

}); 
0

嘗試,包括在你的配置的shim財產的依賴性

'indexC': { 
     deps: ['index-a'] 
    }, 

這可以確保index-a加載index-c

requirejs.config({ 

     baseUrl: "lib/", 

     paths: { 
      'jquery' : "vendor/jquery-2.0.2.min", 
       'indexA' : 'app/ndex-a', 
       'indexB' : 'app/ndex-b', 
       'indexC' : 'app/ndex-c', 
       'index' : 'app/ndex', 
     } 

    }); 
之前加載

因爲你index-a取決於index-c

更換

define([ "app/index-c" ], function(){ 

require([ "app/index-c" ], function(){ 
+0

謝謝你,但你的配置對我來說看起來不正確(並且沒有產生所需的結果)。 index-c不依賴於index-a,反之亦然,這就是爲什麼我期望index-c先加載的原因。此外,如果應用中的所有模塊都使用define方法配置爲AMD,爲什麼還需要填充? –

+0

對..我完全忘了那個。在配置您的應用程序時不需要包括墊片。檢查更新信息 –

相關問題