如何使用requirejs递归加载目录?

时间:2015-03-20 20:56:44

标签: javascript recursion callback requirejs

如何使用requirejs递归地要求目录中的所有文件及其子目录?

例如,如果我们有一个目录,如:

vendor
    vendor1
        vendor11.js
    vendor2
        vendor21.js
        vendor22.js
        vendor23.js
    vendor3
        vendor31.js

我们如何加载整个目录供应商?使用像require(['vendor/*'], myCallbackFunction)

这样的函数

此函数应加载等效项:

require(
    ['vendor/vendor1/vendor11.js'],
    require(
        ['vendor/vendor2/vendor21.js'],
        require(
            ['vendor/vendor2/vendor22.js'],
            ...and so on
                ... require(
                    ['vendor/vendor3/vendor31.js'],
                    myCallbackFunction
                )
        )
    )
);

1 个答案:

答案 0 :(得分:1)

RequireJS不提供根据模式加载模块的工具。传递给require的内容必须是实际模块名称的列表。

一种选择是在构建应用程序时,根据所需模式扫描模块,并创建一个加载所有其他模块的模块。例如,它可以命名为'vendor_all',可以包含:

define(['vendor/vendor1/vendor11', 'vendor/vendor2/vendor21', ...]);

然后,您将require(['vendor_all'], function () {...});或将'vendor_all'放入另一个模块的依赖项列表中。