EXT_extjs の xtype の意味の分析

WBOY
WBOYオリジナル
2016-05-16 18:37:091395ブラウズ

はじめに

フォーラムでの私の観察によると、xtype を使用する場合にはさらに疑問があります。 xtype をまったく無視したり、xtype が何であるかを知らない人もいます。そこで私は、xtype の概念について詳しく説明することにしました。

定義

xtypeはクラス(Class)を表す識別名です。

たとえば、Ext.ux.MyGrid という名前のクラスがあるとします。通常、この名前を使用してクラスをインスタンス化する (クラスのオブジェクトを作成する) 必要があります。

クラス名に加えて、次のようにクラスの xtype を登録することもできます。
Ext.reg('mygrid', Ext.ux.MyGrid);

where xtype は mygrid であり、クラス名の一般的な形式は Ext.ux.MyGrid です。上記のステートメントは、新しい xtype を登録します。つまり、xtype mygrid はクラス Ext.ux.MyGrid に接続されます。

メリットは何ですか?

手元に大規模なプロジェクトがあると想像してください。ユーザーの操作に応答するために、プログラムには多数のオブジェクト (ウィンドウ、フォーム、グリッド) が含まれています。ユーザーがアイコンまたはボタンをクリックすると、フォーム内にグリッドを含む新しいフォームが作成され、最終的には画面上にレンダリングされます。

Ext2.x より前のコーディングに戻りましょう。当時は、ページが初めてロードされた後 (プログラム コードが初めて実行されたとき)、すべてのオブジェクトをインスタンス化していました。クライアント メモリには、Ext.ux.MyGrid クラスのオブジェクトがすでに存在し、ユーザーのクリックを待っています。 同じグリッドに対して、何百ものインスタンスがあると仮定すると、貴重なリソースの無駄遣いです。実際、多くのグリッドでは、ユーザーがグリッドをクリックしても表示されない場合があります。

遅延インスタンス化

xtype を使用する場合、メモリ内にあるのは次のような単なる構成項目オブジェクトです。

Copyコード コードは次のとおりです:

{xtype:'mygrid", border:false, width:600, height:400, ...}


複雑なインスタンス オブジェクトほど高価ではありません。

ユーザーがボタンまたはアイコンをクリックすると、Ext はそれを準備ができているグリッドとして認識します。インスタンス化はレンダリングされますが、すぐには実行されません。Ext は ComponentMgr を使用してこれを理解します。「xtype mygrid のオブジェクトをインスタンス化したい場合、作成したいのは実際には Ext.ux.MyGrid クラスのオブジェクトであることがわかります。」これは次のコードです:
コードをコピー コードは次のとおりです:

create : function (config,defaultType){
return newtypes[config.xtype ||defaultType](config)

は次と同等です:
Java コード

コードをコピーします コードは次のとおりです。
return new Ext.ux.MyGrid(config); >

次に、グリッドをインスタンス化し、レンダリングと表示に進みます。インスタンス化は必要な場合にのみ行ってください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。