【问题标题】:requireJS pass configuration info to all modules with "*" wildcardrequireJS 使用“*”通配符将配置信息传递给所有模块
【发布时间】:2013-05-23 22:05:33
【问题描述】:

我需要使用 requireJS 将配置值传递给我的所有 AMD 模块。

我可以通过以下示例愉快地将配置值传递给特定模块;如requireJS API config modules 文档中所述

requirejs.config({
    config: {
        'bar': {
            raw: true
        },
        'baz': {
            raw: true
        },
        ...
    }
});

以上工作正常,但我有大约 50 个模块我想将相同的配置值传递给,这些模块可能会增加或更改。如上所述,我可以定义 50 个模块名称并传递值,但我真的不想按名称定义每个模块并维护该列表,而是我想做这样的事情。

requirejs.config({
    config: {
        '*': {
            raw: true
        }
    }
});

上面的方法我都试过了,还是不行。

requireJS config map 似乎支持“*”通配符,但我没有看到任何类似“config”的提及。我已经搜索过了,但我想我的“搜索结果很糟糕”。

所以,问题是:“config”是否有“*”通配符支持,而我只是遇到了问题?还是有其他方法可以做到这一点?

【问题讨论】:

    标签: javascript configuration requirejs amd


    【解决方案1】:

    我不知道直接使用通配符语法的方法,但是您可以通过 data-main 底部的 simplest 模块定义来完成同样的事情:

    requirejs.config({
        // normal stuff
    });
    
    define('moduleconfig', {
        color: "black",
        size: "unisize"
    });
    

    然后不需要特殊的 'module' 模块,只需要你的 'moduleconfig' 模块:

    define( ['underscore', 'jquery', 'moduleconfig'], function( _, $, moduleconfig) {
    
        console.log('Color', moduleconfig.color)
    
     });
    

    【讨论】:

    • 谢谢,这似乎确实有效。我为我想要默认值的情况创建了一个默认的“moduleconfig”,然后我可以通过在我的 main.xml 中重新定义它来覆盖它。 (显然)没有对模块配置的通配符支持似乎仍然很奇怪,我确实快速浏览了 requireJS 源代码,但没有注意到任何这样的事情。
    • 所以,我想如果有通配符方法,那么现在有人会跳出来回答。再次感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 2011-08-07
    • 2013-07-28
    • 2013-10-10
    • 2011-07-14
    相关资源
    最近更新 更多