jQueryは非常に大きな文書で動作しますか?

ちょっとプログラミングのpeps!私は質問があります:jQuery。私たちは、非常に大きなHTMLレポートを生成しているソフトウェアアプリケーションを持っています。 Google Chromeをハードディスクからロードするには12〜20秒かかります。

使用されているJavaScriptがいくつかあり、HTMLバージョンのレポートにいくつかの追加機能を与える役割しか果たしません。現在、すべてのイベントは、インラインHTML onclick などから起動されます。

jQueryに変換してセレクタを使用してイベントをバインドすると、セレクタは数千の要素のうちの10個に簡単にマッチする可能性があります。さらに、jQuery(例: $(document).ready())を使用する典型的な方法は、ドキュメントが完全に読み込まれるまでクリックイベントが発生しないようにします。

So the questions are: Is jQuery up to this task? Or am I better suited leaving inline script? If it is, are there certain techniques I need to use to make it work well? And is there a way to circumvent the "no events until document load" scenario?

And a secondary question (this one just occurred to me as I was writing this): This report is being sold to a client. What are my license obligations if jQuery is included as apart of the report?

Edit

@ jfriend00:私はこれを行う方法(報告書を分けて)をやり遂げる方法を少し失っています。レポートは、HTMLとPDFの2つのフォーマットで発行されます。クライアントは、セクションを印刷できるデジタルマニュアルを用意したいと考えています。また、キーパーツをリンクするアンカーを提供するため、HTML版も必要です。 JavaScriptでは、レポートの基になったデータを表示するためのポップアップが表示されます。何が起こったのかは、スケーリングの問題に遭遇したことです。分析されるデータは大幅に増加しており、結果のレポートのサイズも大きくなっています。

機密上の理由から、このレポートはオンラインでも社内のイントラネット上でもライブできません。これは、個人のローカルマシン上で実行される成果物でなければなりません。

誰かがこれをうまく処理するためのヒントを持っているなら、私はあなたのアイデアを聞きたいです。これはしばらく私を悩ませている問題です。

2
@epascarelloリンクをありがとう!
追加された 著者 jwatts1980,
@ jfriend00:あなたのコメントに関連するいくつかの追加情報で質問を更新しました。
追加された 著者 jwatts1980,
@ jfriend00:これを達成するために考えられる唯一の方法は、それらにHTMLファイルの圧縮されたディレクトリを送ることです。ページをすばやく保つには、おそらくレポートを100〜200の別々のドキュメントに分割する必要があります。
追加された 著者 jwatts1980,
@ jfriend00:あなたのアドバイスに感謝します。私たちのクライアントからのフィードバックは、レポートに関してのみ肯定的でした。しかし、私たちの報告は、彼らが必要とする情報を得るための唯一の方法であるため、彼らはそれを受け止めているからです。しかし、それはクライアントではなく、開発者としての私の意見です。あなたが提案したように、彼らは扱いやすいレポートを見つけているとは想像もしません。しかし、クライアントが不満を表明していないときに、何かを変更するための時間と費用を正当化することは困難です。
追加された 著者 jwatts1980,
追加された 著者 epascarello,
あなたとあなたの視聴者に大きな恩恵を与えてください。あなたのウェブページは新しいデザインが必要です。 2000ページのデータを一度にロードするのではなく、データが要求に応じてロードされるように、より動的な動作を追加する必要があります。 jQueryは、コンピュータと忍耐に十分なメモリがある限り、これでうまく動作します。これは、特定の操作が完了するのをどれくらい待つかという問題です。
追加された 著者 jfriend00,
誰も実際にレポートの2000ページを読んでいるわけではないので、一般的にこの問題を解決する方法は、視聴者が関心のあるデータにナビゲートしてから、ajaxを使用してデータをロードして表示するか、ロードする。異なるデータを表示したい場合は、異なるデータを動的にロードし、それらに表示します。これには、より慎重な設計が必要であり、視聴者がどのように見たいかを伝え、その情報だけを取り出して表示できるようにする方法を再考する必要があります。しかし、スケーラビリティとパフォーマンスはより優れています。
追加された 著者 jfriend00,
私は主題を知らないので分割する方法を助けることはできませんが、結果の複数ページのナビゲーションを行う合理的な方法を想像できなければ、視聴者が望むかもしれない、またはあなたは本当に問題を再考していない。一度に画面上に2000ページは必要ありません。
追加された 著者 jfriend00,
または、あなたは先を行くことができ、顧客とのリーダーシップを示すことができ、データが十分に大きくなって、ユーザーの経験が苦しみ始めていることを提案することができます。現在と将来の両方でより大量のデータを扱うことができるように設計された新しいプロジェクトを検討してください。私は、クライアントが請求書を支払って、どこで$を使うべきかを決めていますが、時には、どのような問題に注意が必要かを教えなければなりません。
追加された 著者 jfriend00,
500〜2000ページは過度に...何とか分割する
追加された 著者 darioo,

4 答え

document.ready に関する限り、 .live()関数を使用してイベントをバインドすると、DOMに要素が追加されるとイベントハンドラが追加されます。

の代わりに:

$(function() {
    $().bind(, );
});

.live()を使用することができます:

$().live(, );

.live()の説明( http://api.jquery.com/live/ ):

現在のイベントと一致するすべての要素のイベントにハンドラをアタッチする   セレクター、現在および将来。

4
追加された
私がjQueryに切り替えると、これを試してみます。ご回答有難うございます!
追加された 著者 jwatts1980,

jqueryはほとんどすべてのタスクを処理します。問題は、これらのレポートがロードされるブラウザであれば問題ありません。レポートのある行ごとに「開始処理」ディレクティブを埋め込むことができます。その結果、たとえば100行のレポートが終了すると、JSコールがありますそれらの100行でスクリプトを開始します。

次に、別の100行のレポートと別の関数呼び出し。辛いですが、少なくとも最初の数百行は、残りのページが読み込まれるようにインタラクティブになります。

#2に関しては、それは法的な問題です。 jqueryはデュアルMIT/GPLライセンスの下にありますので、おそらく大丈夫ですが、確かに弁護士に相談してください。 "しかし、インターネット上のいくつかのランダムな変人はそれが大丈夫だと言った!あなたが著作権侵害のラップで裁判所に運ばれた場合、有効な防御ではありません。

2
追加された

ライセンスの部分については、jQueryは自由に使用でき、クライアントの展開に特定のルールがないので、あなたの罰金と思う。

パフォーマンスの部分については、jQueryは問題ではないと思います。もちろん、大規模なDOMを使用すると、すべてが少し遅くなります。ブラウザを見る必要があるのは、スクリプトを実行するために異なるjsエンジンを使用するためです。

スクリプトがとにかく遅くなったら、物事を分割したり、より具体的なセレクタを追加したり、レポートをビットごとに処理したりすることができます。

1
追加された

500-2000の印刷ページ文書にぺージを付け、ajaxを使用してコンテンツを動的に読み込みます。

1
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript