在类上配置别名的需求是什么?

时间:2015-09-27 11:13:37

标签: javascript extjs extjs4

我想知道为什么我们需要在ExtJS中的类上配置别名?它提供了哪些好处?

2 个答案:

答案 0 :(得分:0)

xtypealias用于从其他对象中获取对象的引用,而不是自己实例化它们或将它们放入变量中。

由于Ext.form.TextField有一个xtype'textfield',我们可以这样做:

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

答案 1 :(得分:0)

第一个,最简单但有价值的好处是你不需要输入可能的长类名,但是当你需要使用类时可以使用短(呃)别名。

想象一下,我们需要在布局中使用上面的类。

没有别名,我们需要输入:

Ext.create( 'Ext.container.Container',{      布局: 'VBOX'     ,项目:         Ext.create( 'MyApp.view.MyGridView',{             // config
        })
    ] });

Ext.create( 'Ext.container.Container',{      布局: 'VBOX'     ,项目:         Ext.create( 'MyApp.view.MyGridView',{             // config
        })
    ] }); 并使用别名输入:

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

Ext.create( 'Ext.container.Container',{      布局: 'VBOX'     ,项目:[{         的xtype: 'mygrid'         //配置     }] }); 后者比前者少了20次击键。现在想象一下,您需要在更大的应用程序中使用您的类数百次。显而易见的是,xtype保存了大量的输入,而不是说减少长名称中拼写错误的风险。

其次,非常有价值的好处是Ext.create无条件地实例化类,无论是否需要。您可以在用户可能永远不会点击的大型应用程序中拥有许多视图,tabpanels或卡片布局,或者很少。

换句话说,某些已定义的类永远不会被实例化,或者它们可以等到用户需要它们。因此,xtype可以节省内存,这在现代计算机中并不是很重要,因为实例化的Ext / Touch类不会吃掉千兆字节。

我想提到的最后一个好处,这非常重要,也是一个极大改进的代码可读性和可维护性。代码不只是一次编写而且在它工作时被遗忘,但它被许多开发人员读取,调试和修改,因此所有使其更短,更好,更容易理解的内容都是

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