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

Javascript 是否可以使用require.js为文件夹设置依赖项?,javascript,requirejs,Javascript,Requirejs,是否可以使用require.js为整个文件夹设置依赖项 我知道您可以使用垫片配置来设置文件的依赖项: require.config({ shim: { 'plugin/backbone/xyz': { deps: ['lib/backbone'], exports: 'Backbone' } } }); 在上面的示例中,我定义了插件主干/xyz的依赖关系,但我想定义所有主干插件的依赖关系: requ

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

我知道您可以使用垫片配置来设置文件的依赖项:

require.config({
    shim: {
        'plugin/backbone/xyz': {
            deps: ['lib/backbone'],
            exports: 'Backbone'
        }
    }
});
在上面的示例中,我定义了插件主干/xyz的依赖关系,但我想定义所有主干插件的依赖关系:

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

我想我曾经在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'
    }
}
垫片:{
“库/主干”:{

导出:“主干”//否,您无法轻松创建通配符,以便从配置本身向文件夹下的所有文件添加依赖项。但是,您可以在配置之前创建循环,并添加所需的依赖项

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);
这是我能想到的唯一一种不用自己重写require函数的方法。我承认这并不优雅,但它可以完成这项工作。

您可以创建一个文件数组,这些文件应共享相同的依赖项,并动态创建垫片:

var config = { shim: { /*...*/ } }

var plugins = ['a', 'b', 'c', 'd'],
    plugin_shim = {
        deps: ['lib/backbone'],
        exports: 'Backbone'
    };  

plugins.forEach(function(file) {
    config.shim['plugin/backbone/' + file] = plugin_shim;
});

require.config(config);

但是,如果有人使用

来记录,这将不会很好地工作。您应该删除
for
之后的
每个
for(config.shim中的var shim){
啊,对不起,我在想actionscript。修复了。这将是一个很好的功能。特别是如果我使用Angular之类的东西,它有大量的控制器、服务等。如果说我的“应用程序”文件夹取决于Angular,那就太好了。