有什么办法像这样做吗?
shim: {
bsAlert || bsTooltip || dbDropdown: {
deps: ['jquery']
}
}
而不是跟随
shim: {
bsAlert: {
deps: ['jquery']
},
bsTooltip: {
deps: ['jquery']
},
bsDropdown: {
deps: ['jquery']
}
}
我的shim列表太长了;有什么方法可以使用逻辑运算符或正则表达式来优化我的shim配置吗?
发布于 2013-10-31 11:03:06
添加到路易斯-多米尼克杜博的答案。转换配置的定义如下所示。
define("convert_config", function(){
function convert_config(config){
for(var index in config.shim){
if(index.indexOf("||")!=-1){
var keys = index.split("||");
for(var i=0; i<keys.length; i++){
config.shim[keys[i]] = config.shim[index];
}
delete config.shim[index]
}
}
return config;
}
return convert_config;
})
var convert_config = require("convert_config");
var config = {
baseURL: "lib",
paths: {},
shim: {
moduleA: {},
"bsAlert || bsTooltip || bsDropdown": { deps: ['jquery'] },
}
};
config = convert_config(config);
require.config(config);
发布于 2013-10-31 10:34:15
您可能已经知道这一点,但是为此目的使用||
在普通的JavaScript中是行不通的。我不知道有一种JavaScript“扩展”语言(如CoffeeScript),它将允许您建议的内容。
但是,可以动态地构造传递给需求的配置对象。所以你可以做这样的事:
var config = {
baseURL: "lib",
paths: { ... },
shim: {
moduleA: { ... }
}
};
var s = config.shim;
s.bsAlert = s.bsTooltip = s.bsDropdown = { deps: ['jquery'] };
require.config(config);
如果您需要做很多这样的工作,可以编写一个配置如下:
var config = {
baseURL: "lib",
paths: { ... },
shim: {
moduleA: { ... }
"bsAlert || bsTooltip || bsDropdown": { deps: ['jquery'] },
}
};
然后,让一个函数遍历config对象,在将对象传递给requirejs之前,将表单"A而行行B“的键转换为requirejs想要的东西。而且,由于当您多次配置它时,requirejs会组合它的配置,所以您可以拥有如下内容:
require.config({
// ... minimal config allowing to find "convert_config"
});
var convert_config = require("convert_config"); // module returns function
var config = {
baseURL: "lib",
paths: { ... },
shim: {
moduleA: { ... },
"bsAlert || bsTooltip || bsDropdown": { deps: ['jquery'] },
}
};
convert_config(config); // modifies object in-place
require.config(config); // pass the full configuration to requirejs
https://stackoverflow.com/questions/19703182
复制相似问题