是否可以使用require.js为文件夹设置依赖项?

and*_*lrc 9 javascript requirejs

是否可以使用require.js?设置整个文件夹的依赖项?

我知道你可以使用shim配置来设置文件的依赖关系:

require.config({
    shim: {
        'plugin/backbone/xyz': {
            deps: ['lib/backbone'],
            exports: 'Backbone'
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我定义了插件骨干/ xyz的依赖关系,但我想定义所有骨干插件的依赖关系:

require.config({
    shim: {
        'plugin/backbone/': { // I would like to specify a folder here but it doesn't work.
            deps: ['lib/backbone'],
            exports: 'Backbone'
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

我想我曾经在GitHub上找到了一个关于它的要点,但我似乎无法再找到它.


澄清:这不是要求整个文件夹,而是为它设置依赖关系 - 文件夹中的所有文件在准备初始化之前需要的是什么,每个文件都是其中之一.它可以通过为所有文件添加填充程序来完成,但我只想为整个文件夹添加一次填充:

shim: {
    'lib/backbone': {
        exports: 'Backbone' // <- No use of .noConflict() so all plugins can be required and export Backbone as well.
    },
    'plugin/backbone/a': {
        deps: ['lib/backbone'], // <- Require backbone
        exports: 'Backbone' // <- Export backbone
    },
    // Same requirement and folder for these files:
    'plugin/backbone/b': {
        deps: ['lib/backbone'],
        exports: 'Backbone'
    },
    'plugin/backbone/c': {
        deps: ['lib/backbone'],
        exports: 'Backbone'
    }
}
Run Code Online (Sandbox Code Playgroud)

J_A*_*A_X 2

不,您无法轻松创建通配符来从配置本身将依赖项添加到文件夹下的所有文件。但是,您可以在配置之前创建一个循环并添加您想要的任何依赖项。

var config = {
    shim: {
        'plugin/backbone/xyz': {
            deps: ['lib/dependency'],
            exports: 'Backbone'
        }
    }
};
for(var shim in config.shim) {
    if(shim.indexOf('plugin/backbone/') == 0) {
        if(config.shim[shim].deps == null) {
            config.shim[shim].deps = [];
        }
        config.shim[shim].deps.push('lib/backbone');
    }
}
require.config(config);
Run Code Online (Sandbox Code Playgroud)

这是我能想到的唯一方法,而不必自己重写 require 的函数之一。我承认,这并不优雅,但它可以完成工作。