最近 (2.x / 3.x) xtype とファクトリ メソッドを使用して、同じくらい高速なクラスのインスタンスを受け取りました。これで、4.x と MVC を使用した最初のアプリを開始しました。チュートリアルで説明されているように、MVC パターンでは、使用したくないビューごとにクラスを拡張する必要があります。たとえ 1 回しか使用しない場合でもです。しかし、Sencha 自身が書いたベスト プラクティスには次のように書かれています。
再利用性または機能の追加のために拡張するだけです
私の場合、いくつかのパラメーターを除いて、1 つの基本クラスから作成できたとしても、たくさんのクラスを登録する必要があります。title, width,...
もう 1 つのポイントは、Controller は慣例により StoreId を上書きし、厳密な入力も必要とすることです。つまり、class-name は . で終わる必要がありs
ます。しかし、私が知る限り、コントローラーストア/モデル配列内のモデルもストアも惜しまないので、この規則の他のポイントはタイピングを惜しまないようです。
次のポイントは、3.X から 4.X にマージした後、アプリケーションの初期ロード時間が長くなったことです。これは、定義する必要がある多くの新しいクラスが原因であるか、またはすべてのコントローラーが起動時にインスタンス化されるという事実が原因であると思われますMVC パターンのデフォルトの動作によるものです。たとえば、アプリケーションコントローラーでリクエストした場合など、コントローラーを自動インスタンス化せずに怠惰にする方法はありますか?
はい、それはたくさんの質問ですが、それらはすべて同じトピックに関連していると思います。
編集
ソースコードを掘り下げた後
s
、ストアに名前を付けるときの要件について確信が持てなくなりました。MVCチュートリアルを進めているときに、これに出くわしたと思いました。誰でもこれを確認できますか?
編集2
私の結論
レーシー レンダリングは非常に単純です。まず第一に、コントローラーは ApplicationController コントローラー配列で言及されるべきではありません。このようなコントローラーのインスタンスを作成するには、ApplicationController.getController(pureClassName)
[各コントローラーには、呼び出された ApplicationController への参照が含まれていることに注意して ください]メソッドとメソッドが ApplicationController によって呼び出されなくなっapplication
たことに注意する必要があります。これは自分で。内部参照キャッシュにこのコントローラーのインスタンスが既に存在する場合、ApplicationController の最初のルックアップを呼び出すと、インスタンスが作成され、コントローラー名が次のように挿入されます。init(application)
onLaunch(application)
getController()
Id
. したがって、コントローラーは一種のシングルトンであり、まったく問題ありません。コントローラー自体は、登録されたストア、モデル、およびビューのすべてのゲッターを作成し、推測ですが、それら (少なくともストア) をインスタンス化します。ストアの名前付けの制限については、s で終わることに制限はありません。