0

マルチページアプリケーションに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() {
    }
);

私の期待:「メイン」とメインで指定されたすべての依存関係がロードされるまで、「メインライブラリ」はロードを開始しないということでした。各ページのネストされたrequire呼び出しで「main-library」が必要なので、これを期待しています。上記を参照。

問題: page1.html が読み込まれると、main.js の読み込みが完了する前に main-library.js の読み込みが開始され、main-library が require.config の取得に失敗するため、依存関係のパスが読み込まれないように見えます。それによって見られます。

私は何を間違っていますか?

4

1 に答える 1

0

私自身の質問に答えます。実際、「メインライブラリ」を再度ロードしていたのは、そのpage1.htmlでのもう1つの要件でした。だから私は次のようなものを持っていました:

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

メインライブラリでのこの2番目の要件は、パスの検索に失敗したものでした。メインのrequireでラッピングしました。

于 2012-08-12T06:39:47.437 に答える