3

それぞれをロードするのではなく、1 つの名前空間のすべてのクラスを 1 つのファイルに結合したいと考えています。はい、生産環境でローダーを使用すべきではないことはわかっていますが、これらの名前空間はめったに使用されません。

名前空間があるとしましょう

App.Employee.*

App.Employee1 つのファイル/リクエスト内に名前空間全体をロードしたいと考えています。私にとっては、これは可能なはずのように聞こえますが、ローダーが という名前のクラスを探していたため、機能させることができませんでしたApp.Employee

それで、これは箱から出してすぐに可能ですか、それとも理論的に可能ですか、それともまったく不可能ですか?

4

3 に答える 3

2

最善の方法は、使用頻度の低い部分を含めてアプリケーションを構築することです。アプリが 20 秒または 30 秒前に読み込まれるかどうかは問題ではありませんが、後で遅延がより顕著になり、目立つようになる場合があります。Sencha Cmd がその手助けをしてくれます。

アプリが動的読み込みの恩恵を受けることができると思われる場合は、 を使用してExt.Loader.loadScriptください。callback問題のスクリプトがロードされたときに起動するパラメーターがあり、アクション ポイントが得られます。スクリプトは必ずしも Ext クラスである必要はありません。圧縮された形式のアプリケーションの一部を含め、どの JavaScript でも可能です。

于 2013-03-07T23:06:56.247 に答える
1

すべての名前空間 App.Employee.* を 1 つのファイル /App/employee.js に収集し、必要なときにファイルのフル パスでロードできます。

Ext.require("/App/employee")

UPD。私もそれでいくつかの問題を発見しました。Ext.loader は employee.js を待ちません。また、employee.js のクラスに依存関係がある場合、例外がスローされます。Ext.syncRequire("/App/employee")代わりに試してください。私のテストではうまくいきました。

ファイルへのフル パスを (Web ルートから) 宣言することを忘れないでください。

于 2013-03-04T18:45:59.990 に答える
-1

すべてのクラスを 1 つの js ファイルに入れ、そのファイルをロードする必要があります (すべての単一ファイルのコードをコピーして新しいファイルに貼り付け、 のような名前を付けますApp.employee.js)。1 回の Ajax リクエストで複数のファイルをロードすることはできないため、ローダーは役に立ちません。

loader の詳細については、 Ext ドキュメントを参照してください。

ご参考までに:

Ext はCamelCase、クラスと名前空間の命名を使用します。名前空間はすべて小文字で始まり、クラスはすべて大文字で始まります。これにより、両方のタイプを簡単に区別できます。その規則に従うことをお勧めします。詳細については、こちらをご覧ください

于 2013-03-03T12:47:11.240 に答える