在Javascript AMD中,为什么定义没有名称的模块很有用?

时间:2015-08-12 08:33:02

标签: javascript module requirejs amd commonjs

命名模块对我来说很有意义:

define('myModule', ['dep1', 'dep2'], function (dep1, dep2) {

    //Define the module value by returning a value.
    return function () {};
});

当我想使用此模块时,我可以使用require导入它:

require('myModule', function(myModule){})

然而,我无法理解的是这样的匿名模块(来自requireJS examples):

define(['dep1', 'dep2'], function (dep1, dep2) {

    //Define the module value by returning a value.
    return function () {};
});

上面的代码用于定义匿名模块吗?如果是这样,该模块如何被其他模块使用/导入/引用?有没有人有这方面的想法?

1 个答案:

答案 0 :(得分:3)

如果您在链接的页面上向下滚动一下,则表示

  

请注意,上述模块没有为自己声明名称。这就是使模块非常便携的原因。它允许开发人员将模块放在不同的路径中,为其提供不同的ID /名称。 AMD加载程序将根据其他脚本的引用方式为模块提供ID。

因此,模块实际上会根据您加载包含它的文件的方式获取一个名称。

我想这个想法是你使用“匿名”模块(每个文件一个)开发,然后有一个构建工具将它们全部捆绑(在过程中为它们命名)。