Javascript r、 两个包含almond的.js文件是否可以共享依赖项?
是否可以将almond与多页设置一起使用,如下所示: common.js加载在所有页面上,包含almond、bootstrap和jquery main1.js仅在第1页加载,其中包含almond和需要jquery的app/main1.js。 当我运行main1.js的构建时,我排除了bootstrap和jquery,因为它是通用的 在第1页上加载了common.js和main1.js,但我得到一个错误:Javascript r、 两个包含almond的.js文件是否可以共享依赖项?,javascript,requirejs,r.js,almond,Javascript,Requirejs,R.js,Almond,是否可以将almond与多页设置一起使用,如下所示: common.js加载在所有页面上,包含almond、bootstrap和jquery main1.js仅在第1页加载,其中包含almond和需要jquery的app/main1.js。 当我运行main1.js的构建时,我排除了bootstrap和jquery,因为它是通用的 在第1页上加载了common.js和main1.js,但我得到一个错误:Uncaught错误:app/main1缺少jquery 有可能用杏仁做这个吗?或者我做错了什
Uncaught错误:app/main1缺少jquery
有可能用杏仁做这个吗?或者我做错了什么
更新:
我正在使用django require,它将python对象转换为r.js的命令行条目,而且它将提供的模块重命名为“almond”,并将命名模块添加到include中(这可能是导致我的错误的原因?)。另外请注意,django require不允许包含/排除require_独立_模块,我添加了以下功能:
REQUIRE_STANDALONE_MODULES = {
"common": {
"out": "common.js",
"include": ["bootstrap", "jquery"],
"build_profile": "module.build.js"
},
"main1": {
"out": "main1.js",
"exclude": ["bootstrap", "jquery"],
"build_profile": "module.build.js"
}
}
Main1.js
require(['app/main1']);
这将转换为如下生成文件条目:
modules = {
"almond": {
"out": "common.js",
"include": ["common", "bootstrap", "jquery"],
"build_profile": "module.build.js"
},
"almond": {
"out": "main1.js",
"include:"main1",
"exclude": ["bootstrap", "jquery"],
"build_profile": "module.build.js"
}
}
这是可能的。你只需要清楚你的包含和排除。在以下设置中,所有模块都存储在
js
子目录中,优化输出输出到build
。为了简单起见,jQuery存储为js/jQuery.js
,因此无需调用require.config
js
中的文件是:ammond.js
,jquery.js
,main1.js
和main2.js
以下是构建配置:
({
baseUrl: "js",
optimize: "none", // So that we can see what is going on in the bundles.
dir: "build",
removeCombined: true,
skipDirOptimize: true,
modules: [
{
name: "common",
create: true,
include: ["almond", "jquery"]
},
{
name: "main1",
exclude: ["jquery"],
insertRequire: ["main1"]
},
{
name: "main2",
exclude: ["jquery"],
insertRequire: ["main2"]
}
]
})
需要公共模块的create:true
选项,以便优化器创建它。大概,对require.config
的调用将被放入js/common.js
中,然后您将删除此选项
此优化的结果加载到第1页,其中包含:
<script type="text/javascript" src="build/common.js"></script>
<script type="text/javascript" src="build/main1.js"></script>
第2页将加载build/main2.js
加载引导程序需要一个与一般情况相同的RequireJS配置,并且与上面代码中的jQuery完全相同。请参阅原始问题中的我的更新。我的构建设置与您相同。还要注意,我的common模块实际上以common.js的形式存在,因此我不需要create=true,require调用是在common、main1和main2中进行的,因此不需要插入require@LouisThemain1.js调用
require(['app/main1'])
,这是找不到的模块。但是,此模块的代码确实存在于生成文件中。那么可能是将main1重命名为almond导致了这个问题?又救了我一命!谢谢@Louis@Louis嘿,看来我忘记接受这个极好的答案了。我为延迟道歉。@arctelix很高兴能提供帮助!