0

javascript フレームワークで requirejs の使用を開始しましたが、firefox でのみ発生するように見える問題に気付きました。

サーバーからのリクエストには、表示したいコンポーネント (ボタン、ラベル、チェックボックスなど) の html と JavaScript が含まれています。JavaScript には、コンポーネント固有の情報が含まれます。たとえば、ラベルのテキストの色。

簡単な例は次のとおりです。

<button type="button" id="button123">Test</button>
require(['BUTTONDEPENDENCY'], function() {
    register("button123");
    console.log("component info");
    ...
});

このシムのようなものです。

BUTTONDEPENDENCY = /js/button.js

リクエストには、これらのコンポーネントに関する情報を含む JSON 配列も含まれています (詳細については説明しません)。JSON 配列は、html/javascript がブラウザーにロードされた後に実行されます。

JSONArray 内の各オブジェクトを実行するとき、getComponent()関数を実行する必要があります。実行しようとしてgetComponent('button123')も、require 関数が実行されていないため見つかりません (実行する必要がありますregister("button123");)。実際には実行されますが、見つからない後です。Chrome ではこの問題は見られないので、これはタイミングの問題であると推測しています (Chrome は依存関係をより速くロードしますか?)

Chrome で正常に動作するのはなぜですか?

以前にモジュールにロードしたことがあるのに、ロードに時間がかかるのはなぜですか?

登録が実行されるまで getComponent を実行する前に JavaScript を強制的に待機させる必要がありますか? これにより、アプリケーションで問題が発生する可能性があります

どんなアドバイスも素晴らしいでしょう。

4

1 に答える 1

0

これが RequireJS の仕組みだと思います。

http://requirejs.org/docs/api.html#pageload

たとえば、次のコードでは、最初のアラートの前に 2 番目のアラートが表示されると思います。

<script>
require(['foo'], function(foo){
    alert(1);
});
</script>
<!-- lots of HTML -->
<script>
    alert(2);
</script>
于 2013-06-04T18:05:51.357 に答える