创建相同 require.js 模块的多个版本

Create multiple builds of the same require.js module

使用 require.js 和 r.js,假设我有一个模块,"myModule.js"。

r.js docs 表示他们支持与 has.js 集成,因此

has: {
     feature: true
}

转换如下:

if (has('feature')) {
     alert('feature detected!');
} else {
     alert('feature not supported')
}

至:

alert('feature detected!');

但是,我该如何着手创建同一模块的两个版本?一个版本适用于支持该功能的浏览器,另一个版本适用于不支持该功能的浏览器。

假设您的应用程序入口点名为 app。您可以创建一个模块 app-has-foo,其中特征 foo 为真,app-no-foo 为假。您必须使用 create 以便 r.js 知道它必须创建模块。您使用 override 覆盖那些属于 modules 选项之外的选项。

({
    baseUrl: ...,
    mainConfigFile: ...,
    dir: "out",
    modules: [
        {
            name: "app-has-foo",
            create: true,
            include: ["app"],
            override: {
                has: {
                    foo: true
                }
            }
        },
        {
            name: "app-no-foo",
            create: true,
            include: ["app"],
            override: {
                has: {
                    foo: false
                }
            }
        }
    ]
});