2012-05-11 38 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