2015-09-27 11 views
1

我想知道爲什麼我們需要在ExtJS的類上配置別名?它提供了什麼好處?什麼是需要配置類的別名?

+2

你能告訴我們試過什麼,以便人們可以幫助你?請檢查[如何提問](http://www.stackoverflow.com/help/how-to-ask)。 –

+0

Ext.define('MyApp.view.MyAppView',{ extend:'Ext.grid.Panel' ,alias:'widget.myapp' }); 爲什麼我們需要這個'別名',它提供了什麼好處? –

+0

檢查[this](http://extjs.eu/what-is-an-xtype/) – MMT

回答

0

首先,最簡單的,但有價值的好處是,你並不需要大概long類型的類名,但是當你需要使用類,你可以使用短(ER)的別名。

想象一下,我們需要在佈局中使用上述類。

沒有別名,我們需要輸入:

Ext.create( 'Ext.container.Container',{ 佈局: 'VBOX' ,項目:[ Ext.create('MyApp.view。 MyGridView',{ // config
})
] });

Ext.create( 'Ext.container.Container',{ 佈局: 'VBOX' ,項目:[ Ext.create( 'MyApp.view.MyGridView',{// 配置
})
] }); 並用別名,我們輸入:

Ext.create( 'Ext.container.Container',{ 佈局: 'VBOX' ,項目:[{ 的xtype: 'mygrid' //配置 }] });

Ext.create('Ext.container。容器',{ layout:'vbox' ,items:[{0} 0 xtype:'mygrid' // config }] }); 後者比前者少20次按鍵。現在想象你需要在更大的應用程序中使用你的類數百次。很明顯,xtype可以節省大量的打字量,而不用說減少長名稱拼寫錯誤的風險。

其次,非常有價值的好處是Ext.create無條件地實例化類,無論它是否需要。您可以在大型應用程序中擁有許多視圖,Tabpanel或卡布局,用戶可能永遠不會點擊這些視圖,或者很少。

換句話說,一些定義的類永遠不會被實例化,或者他們可以等到用戶需要它們。因此,xtype可以節省內存,這在現代計算機中並不重要,因爲實例化的Ext/Touch類不會吃千兆字節。

我想提及的最後一個好處是,這非常重要,它的代碼可讀性和可維護性也大大提高了。代碼並不只是寫一次,它工作時被遺忘,但它是閱讀,調試和許多開發人員修改,以便一切,使得它更短,更好,更容易理解計數

學分: - http://extjs.eu/what-is-an-xtype/

+0

「因此,xtype可以保存內存」是不正確的。實例在容器初始化時創建,無論它們是否爲xtypes。 –

+0

你能解釋一下嗎? @EvanTrimboli –

0

xtypealias用於從其他對象中獲取對象的引用,而不是自己實例化或將它們放入變量。

因爲Ext.form.TextFieldxtype「文本框」,我們可以這樣做:

items: [{ 
    xtype: 'textfield', 
    autoWidth: true, 
    fieldLabel: 'something' 
}] 

定義視圖像這樣有一個很大的好處。這樣的框架將lazy load的對象。

你也可以用Ext.ComponentQuery.query()

例如稍後查詢它:

Ext.create('MyApp.view.MyButton', { 
    xtype: 'mybutton', 
    ..... 
}); 

後面的代碼,如果你這樣做:

var buttonArray = Ext.ComponentQuery.query('mybutton'); 

更多信息:
https://www.sencha.com/forum/showthread.php?150577-Ext.define-xtype-vs-alias
http://docs.sencha.com/extjs/4.1.3/#!/guide/application_architecture
https://www.sencha.com/forum/showthread.php?29531-Form-inside-Accordion-inside-Window&p=138612&viewfull=1#post138612
https://stackoverflow.com/a/13594388/408487
https://stackoverflow.com/a/2318285/408487

相關問題