2012-05-11 55 views
0

想知道是否可以在相同的功能範圍內同時使用define和require。通常是要求或定義,我如何都在同一範圍內?RequireJS - 在相同的功能範圍內同時使用define和require

define(["my/cart", "my/inventory"], 
    function(cart, inventory) { 
     //Define foo/title object in here. 
    } 
); 

require(["some/module", "a.js", "b.js"], function(someModule) { 
    //This function will be called when all the dependencies 
    //listed above are loaded. Note that this function could 
    //be called before the page is loaded. 
    //This callback is optional. 
}); 
+0

您通常不會顯式調用define。 'define'通常是作爲該模塊的'require'調用的結果執行的。所以你需要在你的代碼中require([「foo/title」])',這會導致模塊被加載/定義。 –

回答

3

define功能爲「定義」模塊使用AMD風格的依賴關係,並require大多用於調用先前define函數定義的那些模塊。

建議的做法是爲每個文件只定義一個模塊,但如果您將模塊的名稱作爲該函數的第一個參數傳遞,則可以添加多個define

如果你明確地傳遞名稱爲define功能,你可以窩define一個require電話裏面,但它會使沒有任何意義,因爲傳遞給require了所有的依賴可以傳遞給define直接,這是更快的比嵌套定義更清晰的要求。

也許,嵌套一個require一個define內可以更加有用,也許如果你有那些只在一定條件下所需的依賴模塊,它可能是有意義的增加對define功能的公共依賴,而且越在條件語句中使用require

在我看來,重要的概念是要明白,基本上define是用於定義AMD模塊,而require是用於調用它們。 (您可以使用非AMD文件作爲依賴項,但這是其他問題。)

+0

我只是需要。我想根據某些條件加載模塊。像注入依賴關係。但我只發現異步需求。有一種方法可以在定義內同步地獲取我需要的模塊嗎?有點像require(「moduleA」),但它只在之前加載時才起作用。 – ccsakuweb