2
因此,这里是我的代码流:requireJS 2.1.5依赖无序嵌套需要
main.js --> jquerymobile --> router --> extra --> lib1 --> lib2
在extra.js,后负荷高达LIB2,设置我的模块
//extra.js
require(['lib1'], function() {
$("#body").append('<p>got lib1</p>');
require(['lib2'],
$("#body").append('<p>got lib2</p>');
window.stuff = true;
$("#body").append('<p>set my module</
});
});
在我router.js,我用我的模块加载后占用额外的:
//router.js
require(['../extra'], function() {
$("#body").append('<p>using my module</p>');
console.log(window.stuff);
});
我期待我的模块来建立它在路由器使用前.js文件。然而,这是命令我得到:
set my router
using my module
got lib1
got lib2
set my module
当然,我得到了一个未定义当我尝试使用我的模块(window.stuff)。
这里是这个错误演示:https://dl.dropbox.com/u/19311981/demo.zip
你们能帮助我找出我做错了什么在我指定的依赖?
谢谢你的回答。但是在'extra.js'中使用嵌套require的原因是为了保证'lib1.js'在'lib2.js'之前加载。把它们放在需要数组的定义中会加载它们,但我认为它不会指定哪一个应该首先加载。 – bizi 2013-03-28 16:53:41
如果lib2需要lib1,那么它应该这样定义,类似于我上面用extra.js提出的 – explunit 2013-03-28 17:01:11
非常感谢。 'lib1'和'lib2'不是我的代码,它们被下载。所以,起初我想让他们保持联系。 (如果有人维护我的代码,他可能会在下载新版本时覆盖定义模式)。但似乎使用'define'语法是唯一的方法来管理这个。我现在有正确的顺序。再次感谢您提出的答案。我现在将它标记为正确的答案。 – bizi 2013-03-28 18:06:21