0

ブラウザーをクラッシュさせる EXT の大規模な実装について、以前 にこの質問をしました。

これは、backbone と three.js にも当てはまることがわかりました。コードの読み込みを抑制する方法がないため、すべてのクラスベースの JavaScript ライブラリにはスケーラビリティの制約が組み込まれているようです。

これらのケースのそれぞれで、ブラウザをハングアップさせるのは、オブジェクトのインスタンス化ではなく、クラスのインスタンス化です。EXT の「遅延読み込み」でさえ、クラスではなくオブジェクトのインスタンス化を遅らせるだけであり、ブラウザのクラッシュは、EXT がオブジェクトのインスタンス化フェーズを開始する前に発生することがよくあります。

Backbone はコードをビューに分割することでこの問題を解決しようとしますが、ビューごとにロードするコードが多すぎて、クラッシュするのを見るだけです。

ここで鈍くしようとしているわけではありません。「1000 個の EXT コンポーネントをインスタンス化するとどうなるか」と尋ねると、「それほど多くインスタンス化しないでください」という応答が返ってきましたが、応答者は単に要点を見逃しています。

コードが何であるかは関係ありません。スケーラビリティの制限が何であるかが問題です。

また、EXT、バックボーン、およびその他の多くの JS フレームワークでは、クラスベースのインスタンス化は負荷分散されません。

一度にすべてのクラスをインスタンス化しないように、クラスベースのフレームワークをどのように構造化できますか?

しかし、ブラウザーでは、スクリプトの読み込み時間は限られたリソースであり、クラスベースのシステムが多い場合は一度にすべてをコンパイルする必要があります。これは、すべてのクラスベースの JavaScript フレームワーク (EXT. バックボーン、Three.js など。

これらのフレームワークをスケーラブルにする方法について誰でも対処できますか?

どんな助けでも大歓迎

4

2 に答える 2

4

4000行のコードはそれほど多くありません。また、ブラウザのクラッシュは通常、利用可能なすべてのメモリを消費して互いに跳ね返る無限の自立ループを意味します。したがって、一般的に言えば、いくつかの考えられる理由があります。

  • 名前空間のないフレームワークの名前の衝突
  • プロトタイプを関数でオーバーロードし、円形オブジェクトを反復処理します
  • 不十分な実装

デバッグするには、

  1. 各フレームワークの開発コピーを入手する
  2. 有罪のコンストラクターにいくつかのブレークポイントを設定します
  3. javascriptプロファイラーを使用して、何が起こるかを正確に確認します
于 2012-07-11T04:24:07.653 に答える
0

これは実際には答えではありませんが、このコンテキストではクラス/オブジェクトの区別は関係ないと思います。JavaScript に関する限り、すべてがオブジェクトです。「クラス」は、ExtJS などの特定のフレームワークで使用できる高レベルの概念です。

EXT の「遅延読み込み」でさえ、クラスではなくオブジェクトのインスタンス化を遅らせるだけです。

ExtJS 4 には、(AJAX リクエストを作成することによって)必要なときにのみクラスをロードする機能があります。

于 2012-07-11T04:30:28.007 に答える