如何使用requirejs递归加载目录

How to use requirejs to load a directory recursivelly?

本文关键字:加载 递归 何使用 requirejs      更新时间:2023-09-26

如何使用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
                )
        )
    )
);

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

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

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

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