您可能已经知道这一点,但||
用于此目的在纯 JavaScript 中是行不通的。我不知道允许您提出什么建议的 JavaScript“扩展”语言(如 CoffeeScript)。
但是,你传递给 requirejs 的配置对象是可以动态构造的。因此,您可以执行以下操作:
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'] },
}
};
然后让一个函数遍历配置对象,将“A || B”形式的键转换为requirejs想要的,然后再将对象传递给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