2013-02-28 120 views
1
// Load the dom module 
require(["dojo/dom"], function(dom){ 
}); 

我知道當dom模塊被加載時調用該函數,但我不清楚函數中的代碼是什麼。它是我的頁面上所有javascript代碼的容器嗎?dojo需要什麼功能?

+0

還請參閱[上requirejs.org文章](http://requirejs.org/docs/why.html) – McDowell 2013-03-01 11:13:28

回答

6

該函數是回調函數,當加載器加載所有你需要的模塊時會調用它。

如果我有

require(["dojo/_base/ready", "dojo/_base/declare"], function(ready, declare) { 

    // do something with declare and ready 

}); 

AMD將會加載準備和申報。這可能需要AMD向服務器進行異步回調。一旦AMD加載模塊,它會調用您傳遞給require方法的函數。

我的回答在Dojo Builds...? What now?有關於AMD API的更多細節。


回答評論中的問題。以下兩條語句可以位於頁面上的任何位置。

<script type="text/javascript"> 
require(["dojo/_base/ready", "dojo/_base/declare"], function(ready, declare) { 
    // do something with declare and ready 
}); 
</script> 

<script type="text/javascript"> 
require(["dojo/_base/ready", "dojo/_base/declare", "dijit/form/Button"], 
    function(ready, declare, Button) { 
    // Assuming this is the second statement to be executed, AMD will 
    // realize that ready and declare have previously been loaded, 
    // so it will use the previously loaded modules, load the Button module, 
    // and then execute the callback 

    // do something with declare, ready, and Button 
}); 
</script> 
+0

如果兩個模塊被加載那麼只有一個功能將被執行? – 2013-02-28 15:45:29

+0

是的。你可以閱讀require方法調用,因爲「這些是我需要的模塊,當你(AMD)加載它們時,這就是我想要做的(函數) – 2013-02-28 15:56:19

+0

但是我的頁面有很多任務需要完成。我必須一次又一次地爲不同的任務需要相同的模塊嗎? - sly_Chandan 5分鐘前 – 2013-02-28 16:09:19