我正在使用 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/