RequireJS - 在相同的函数范围内使用define和require

时间:2012-05-11 02:54:16

标签: 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.
}); 

1 个答案:

答案 0 :(得分:3)

define函数用于使用AMD样式“定义”具有依赖关系的模块,而require主要用于调用先前使用define函数定义的模块。

建议的做法是每个文件只定义一个模块,但如果将模块名称作为该函数的第一个参数传递,则可以添加多个define

如果将名称显式传递给define函数,则可以在define调用中嵌套require,但这没有意义,因为所有依赖项都传递给{{ 1}}可以直接传递给require,这比内部需要的嵌套定义更清晰。

也许,在define中嵌套require可能更有用,也许如果你的模块具有仅在某些条件下需要的依赖项,那么添加公共依赖项是有意义的。 define函数,以及条件语句中具有define的更具体的函数。

在我看来,重要的概念是理解基本上require用于定义AMD模块,define用于调用它们。 (您可以使用非AMD文件作为依赖项,但这是另一回事。)