我正在使用 RequireJs 2.0(或尝试使用)。
目前,我的资产分为“常规”和“自定义”部分。所有页面都应该使用通用脚本,而只有一些页面应该使用自定义。
据我所知,RequireJs 接受一个data-main
包含您的配置和基本上您的模块需要的值。如果所有页面都使用相同的资产,这很好,但我将如何为自定义页面添加额外的data-main
脚本?
谢谢!
我正在使用 RequireJs 2.0(或尝试使用)。
目前,我的资产分为“常规”和“自定义”部分。所有页面都应该使用通用脚本,而只有一些页面应该使用自定义。
据我所知,RequireJs 接受一个data-main
包含您的配置和基本上您的模块需要的值。如果所有页面都使用相同的资产,这很好,但我将如何为自定义页面添加额外的data-main
脚本?
谢谢!
使用您的data-main
属性加载您的常规脚本。在自定义页面上,无论您要做什么需要自定义模块,只需将其包装在require
调用中即可。您的母版页(或模板或布局或在您的服务器平台上调用的任何内容)将具有以下内容:
<html><head>
<script language="javascript" src="require.js" data-main="general" ></script>
</head>
您的自定义页面标记可能如下所示(内存中的语法;仔细检查!)
<p class="funny">I'm a funny paragraph</p>
<script language="javascript">
require(['funny-stuff'], function(fs) {
fs.doSomthing();
});
</script>
该funny-stuff
模块只会被请求它的页面加载。如果您不想或不能在某些页面上使用单独的标记,则可以通过将require
调用包装在if
语句中来从主脚本动态加载依赖项。内general.js
:
// Determine if we need the custom module
if (isFunnyPage()) {
require(['funny-stuff'], function(fs) {
fs.doSomething();
});
}
运行优化器时必须小心,因为它会找到require
调用中引用的依赖项,并默认将其与主文件一起打包。因此,您需要配置优化器以排除自定义模块。