创建相同 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
}
}
}
]
});
使用 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
}
}
}
]
});