我正在使用requirejs进行多页面应用程序。我对主文件的执行顺序有一个奇怪的问题。这是我的设置。
在我的所有html页面中(此主页包含我所有页面都需要的所有常见js文件)
然后在每个页面上(比如page1.html):
<script data-main="main" src="require.js" />
<script>
require(['require','main'],function(require) {
require(['main-library']);
});
</script>
我的main.js看起来像:
require.config({
paths:{
'lib':'../lib',
'jquery': '../lib/jquery/jquery-1.7.1.min',
'jquery.iframe-transport' : '../lib/jquery.iframe-transport.min.js'
},
deps:['jquery','jquery-ui'],
shim: {
<other shim files>
},
});
require([<list of all other dependencies>], function() {
});
main-library.js看起来像:
define('main-library',
['main',
'jquery.iframe-transport',
<other dependencies>
],
function() {
}
);
我的期望: 是不是“main-library”开始加载,直到“main”并且未加载main中指定的所有依赖项。我期待这一点,因为我在每个页面上的嵌套require调用中需要“main-library”。往上看。
问题: 当我的page1.html加载时,看起来main-library.js甚至在main.js完成加载之前就开始加载,并且主库无法获取require.config,因此它看不到依赖关系的路径。
我做错了什么?
答案 0 :(得分:0)
回答我自己的问题。这是另一个需要在page1.html中再次加载“主库”的需求。所以我有类似的东西:
<script data-main="main" src="require.js" />
<script>
require(['require','main'],function(require) {
require(['main-library']);
});
</script>
...
... Other html ...
...
<script>
require(['main-library'],function(require) {
//do something.
});
</script>
主库上的第二个要求是未能找到路径的那个。用主要工作要求包装它。