1

私が使用している jquery.js ファイルと jquery-ui ファイルのスナップショットを取り、サイトで使用している他のすべての .js ファイルと共に巨大な .js ファイルにそれらをダンプしました。

minfication/packing なしでこれを行うと、ファイルが機能しなくなり、通常の .js ファイルの代わりに自分のサイトにロードしようとすると、ファイルに「再帰が深すぎます」というエラーが表示されます。すべてのエラーは、jquery および jquery-ui から発生しました。簡単な番号付けスキームを使用して、jquery.js/jquery-ui ファイルがファイル内で最初にリストされ、正しい順序であることを確認しました (個々のファイルとしてインクルードするのと同じです)。

2 つの質問: 1) JavaScript のインクルード タグには、すべてのファイルを 1 つの巨大なファイルにダンプするのと同じ効果があるのではないですか? JavaScript ファイルが独自のスクリプト タグまたは別のファイル内にあることから得られる追加の分離/隔離はありますか?

2) 私の目標は、サイトで使用するすべての JavaScript (JQuery で重い) を含む 1 つの巨大な .js ファイルを作成し、そのファイルを縮小することで、サイトを高速化することです。なぜこれが見当違いなのですか?それを行うより良い方法は何ですか?

注: Google の CDN バージョンの JQuery ファイルは機能しません。私が使用しているすべての JQuery プラグイン/テーマは Google のバージョンでは機能しません (とにかく、Google の CDN を正常に使用できると言っている人は嘘をついています)。

更新: 回答の良いアドバイスに感謝します。そのすべてが、本番サーバーに JavaScript ファイルをデプロイする方法を学ぶのに役立ちました。私は実際には常に JQuery UI プラグインの最新の SVN ブランチを使用していますが、UI プラグインにエラーがあり、ファイルとマージできませんでした。既に 1 つのファイルに縮小されていて、問題を回避した最新の Theme Rolled プラグインを入手しました。

4

3 に答える 3

5

おそらく、JavaScript ファイルにいくつかの構文エラーがあります。ブラウザは、ファイルを 1 つずつロードするときに修正できますが、「不良」ファイルを組み合わせると失敗します。Rhino コンパイラ ( http://www.mozilla.org/rhino/ )を使用してファイルのコンパイルを試みることができます。

java -cp build/js.jar org.mozilla.javascript.tools.jsc.Main giant.js

また、JSLint バリデータ ( http://www.jslint.com/ ) を使用することもできますが、jQuery を処理できない可能性が高いと考えられます。ただし、すべてのファイルを結合し検証することはできます。

于 2009-02-21T23:22:17.277 に答える
1

このようなスクリプト マネージャーを使用して、必要なファイルとプラグインのみを登録し、その場で読み込むことをお勧めします。

これにより、リクエストが最小限に抑えられ、1 ページに 300k の巨大な JS ファイルをロードする必要がなくなります。

于 2009-02-21T22:28:21.430 に答える
0

別の問題は、ロード順序が変更された可能性があります。ほとんどの JavaScript ファイルはロード順序に依存しないはずですが、最後に jquery をロードすると、次のようになります。

$(document).ready(function() {});

問題が発生します。

于 2009-02-22T03:06:50.107 に答える