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