9

我正在使用 RequireJs 2.0(或尝试使用)。

目前,我的资产分为“常规”和“自定义”部分。所有页面都应该使用通用脚本,而只有一些页面应该使用自定义。

据我所知,RequireJs 接受一个data-main包含您的配置和基本上您的模块需要的值。如果所有页面都使用相同的资产,这很好,但我将如何为自定义页面添加额外的data-main脚本?

谢谢!

4

1 回答 1

3

使用您的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调用中引用的依赖项,并默认将其与主文件一起打包。因此,您需要配置优化器以排除自定义模块。

于 2012-05-31T19:17:04.990 回答