requirejs,multipage,奇怪的执行顺序

时间:2012-08-11 01:03:26

标签: requirejs

我正在使用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,因此它看不到依赖关系的路径。

我做错了什么?

1 个答案:

答案 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>

主库上的第二个要求是未能找到路径的那个。用主要工作要求包装它。