首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >优化垫片结构

优化垫片结构
EN

Stack Overflow用户
提问于 2013-10-31 09:52:20
回答 2查看 117关注 0票数 1

有什么办法像这样做吗?

代码语言:javascript
运行
复制
shim: {
        bsAlert || bsTooltip || dbDropdown: {
            deps: ['jquery']
        }
    }

而不是跟随

代码语言:javascript
运行
复制
shim: {
        bsAlert: {
            deps: ['jquery']
        },
        bsTooltip: {
            deps: ['jquery']
        },
        bsDropdown: {
            deps: ['jquery']
        }
    }

我的shim列表太长了;有什么方法可以使用逻辑运算符或正则表达式来优化我的shim配置吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-31 11:03:06

添加到路易斯-多米尼克杜博的答案。转换配置的定义如下所示。

代码语言:javascript
运行
复制
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); 
票数 1
EN

Stack Overflow用户

发布于 2013-10-31 10:34:15

您可能已经知道这一点,但是为此目的使用||在普通的JavaScript中是行不通的。我不知道有一种JavaScript“扩展”语言(如CoffeeScript),它将允许您建议的内容。

但是,可以动态地构造传递给需求的配置对象。所以你可以做这样的事:

代码语言:javascript
运行
复制
var config = {
    baseURL: "lib",
    paths: { ... },
    shim: {
       moduleA: { ... }
    }
};

var s = config.shim;
s.bsAlert = s.bsTooltip = s.bsDropdown = { deps: ['jquery'] };

require.config(config);

如果您需要做很多这样的工作,可以编写一个配置如下:

代码语言:javascript
运行
复制
var config = {
    baseURL: "lib",
    paths: { ... },
    shim: {
       moduleA: { ... }
      "bsAlert || bsTooltip || bsDropdown": { deps: ['jquery'] },
    }
};

然后,让一个函数遍历config对象,在将对象传递给requirejs之前,将表单"A而行行B“的键转换为requirejs想要的东西。而且,由于当您多次配置它时,requirejs会组合它的配置,所以您可以拥有如下内容:

代码语言:javascript
运行
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19703182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档