0

我正在将 requirejs 用于多页应用程序。我对主文件的执行顺序有一个奇怪的问题。这是我的设置。

在我所有的 html 页面中(这个 main 包含我所有页面所需的所有常见 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”之前,“main-library”不会开始加载,并且在 main 中指定的所有依赖项都没有加载。我希望这是因为我在每个页面上的嵌套要求调用中都需要“主库”。看上面。

问题:当我的 page1.html 加载时,看起来 main-library.js 甚至在 main.js 完成加载之前就开始加载,并且 main-library 无法获取 require.config,因此依赖项的路径不是被它看到。

我究竟做错了什么 ?

4

1 回答 1

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>

对主库的第二个要求是找不到路径的要求。用 main 上的 require 包装它。

于 2012-08-12T06:39:47.437 回答