RequireJS使用多个data-main

dzm*_*dzm 9 javascript requirejs

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

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

从我可以告诉RequireJs,接受一个data-main值来保存你的配置,基本上你的模块需要.如果所有页面都使用相同的资源,这很好,但是如何data-main为自定义页面添加其他脚本?

谢谢!

Car*_*ond 3

使用您的data-main属性加载您的常规脚本。在自定义页面上,无论您要做什么需要自定义模块,只需将其包装在调用中即可require。您的母版页(或模板或布局或服务器平台上的任何名称)将具有以下内容:

<html><head>
<script language="javascript" src="require.js" data-main="general" ></script>
</head>
Run Code Online (Sandbox Code Playgroud)

您的自定义页面标记可以如下所示(内存中的语法;仔细检查!)

<p class="funny">I'm a funny paragraph</p>
<script language="javascript">
require(['funny-stuff'], function(fs) {
  fs.doSomthing();
});
</script>
Run Code Online (Sandbox Code Playgroud)

funny-stuff模块只会被请求它的页面加载。如果您不想或不能在某些页面上有单独的标记,您可以通过将调用包装在语句require内来从主脚本动态加载依赖项if。之内general.js

// Determine if we need the custom module
if (isFunnyPage()) {
  require(['funny-stuff'], function(fs) {
    fs.doSomething();
  });
}
Run Code Online (Sandbox Code Playgroud)

运行优化器时必须小心,因为它会找到调用中引用的依赖项require,并默认将其打包到主文件中。因此,您需要配置优化器以排除自定义模块。