使用多个数据主的 RequireJS

RequireJS using multiple data-main's

本文关键字:RequireJS 数据      更新时间:2023-09-26

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