javascript - RequireJS 使用多个数据主体

标签 javascript requirejs

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

目前,我的 Assets 分为“常规”和“自定义”两部分。所有页面,应使用通用脚本,而只有部分页面应使用自定义脚本。

据我所知,RequireJs 接受一个 data-main 值,它包含您的配置和基本上您的模块需求。如果所有页面都使用相同的 Assets ,这很好,但是我如何为自定义页面添加额外的 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 调用中引用的依赖项,并默认将其与主文件打包在一起。因此,您需要配置优化器以排除自定义模块。

关于javascript - RequireJS 使用多个数据主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10836170/

相关文章:

javascript - 并排和水平对齐两个div

javascript - Disqus 2012 "Uncaught TypeError: Cannot call method ' getPropertyValue' of null"在 Safari 和 Chrome 上

javascript - 未注入(inject)通过 RequireJS 从 CDN 加载 Angular

javascript - Angular 和 requirejs 错误

javascript - 为什么分配一个函数对象返回一个空字符串

javascript - 网页优化

javascript - config.js 的 requirejs 加载超时(优化)

javascript - Durandal 插件未加载

JavaScript:自调用函数返回一个闭包。它是做什么用的?

javascript - 如何使 map 适合传单中的图 block 层边界