0

javascriptファイルには2つの異なるバージョンがあります。1つは正常に動作し、もう1つは動作が遅くなります。私は両方のファイルでClosureCompilerを試しましたが、私はばかなので、数か月後、良いバージョンの元のソースファイルが欠落していることに気づきました。ハードディスクからだけでなく、メモリからも(どの変更を加えたか思い出せません)。

だから今私は持っています:

    • 正常に機能しているファイルの圧縮コード
    • 動作不良ファイルの圧縮コード
    • 動作不良ファイルの非圧縮コード

うまく機能しているソースファイルを再構築する必要があります。嬉しいことに、2つの圧縮バージョンの間には実際にいくつかの違いがあります。

ここにあなたの助けが必要です。

私はこれをうまく機能する圧縮コードで見つけました

(function () {
// same stuff here      
})();

requestAnimFrame(O);

これは、動作の悪い圧縮コードではこのようになります

B.onload = function () {
// same stuff here
};
requestAnimFrame(O)

では、ClosureCompilerは名前のない関数をどの程度正確に宣言できるのでしょうか。();そして、関数宣言の最後にあるものは何ですか?これは非圧縮コードでどのように実現されますか?それが役立つかもしれない場合、これは圧縮されていない悪いバージョン(私は修正したいと思っています)でどのように見えるかです:

function init() {
// same stuff here
}

B.onload = function(){
start()
}

function start() {
init()
requestAnimFrame(0);
}

自分で違いをテストしたい場合は、良いコード を使用した場合の結果と、悪いコードを使用した場合の結果を次に示します。

ロゴをクリックしてみてください。最初のリンクで立方体が速く滑ります。優れたCPUがあれば、ビジュアルを実行しているときに殺されることはありません。逆に、2番目のリンクは、CPUをオーバーロードし、アニメーションを実行すると異なる表示になるようです(コードの違いを見つけて、何を変更したかを思い出したので、この2番目の問題はすでに修正できます)。

4

2 に答える 2

3

「では、Closure Compiler は名前のない関数を正確にどのように宣言できるのでしょうか?」

JavaScript は無名関数をサポートしているためです。イベント ハンドラーを割り当てるときに、これらを頻繁に使用したことがあるでしょう。

();で、関数宣言の最後は何?」

彼らは、関数の後と同じことを行います。彼らはそれを呼び出します。関数の「宣言」ではありませんが。関数は括弧で囲まれているため、無名関数です。

「これは非圧縮コードでどのように実現されるのですか?」

それは圧縮されていないコードに依存します。このパターンは、通常のコードで頻繁に使用されます。コードを実行できるローカル変数スコープを作成します。

于 2012-10-07T21:00:37.787 に答える
0

違いは、悪いものは「同じこと」を行う前に B が読み込まれるのを待っているのに対し、良いものはすぐにそれを行うことです。

于 2012-10-07T22:16:34.167 に答える