在类上配置别名有啥需要?

Posted

技术标签:

【中文标题】在类上配置别名有啥需要?【英文标题】:What is the need of configuring an alias on classes?在类上配置别名有什么需要? 【发布时间】:2015-09-27 11:13:37 【问题描述】:

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

【问题讨论】:

你能告诉我们你做了什么,以便人们可以帮助你吗?请查看how to ask section。 Ext.define('MyApp.view.MyAppView', extend:'Ext.grid.Panel' ,alias:'widget.myapp' );为什么我们需要这个“别名”,它有什么好处??? 检查this 【参考方案1】:

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-aliashttp://docs.sencha.com/extjs/4.1.3/#!/guide/application_architecturehttps://www.sencha.com/forum/showthread.php?29531-Form-inside-Accordion-inside-Window&p=138612&viewfull=1#post138612https://***.com/a/13594388/408487https://***.com/a/2318285/408487

【讨论】:

【参考方案2】:

第一个,最简单但有价值的好处是您不需要键入可能很长的类名,但是当您需要使用该类时,您可以使用较短的别名。

假设我们需要在布局中使用上述类。

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

Ext.create('Ext.container.Container', 布局:'vbox' ,项目:[ Ext.create('MyApp.view.MyGridView', // 配置 ) ] );

Ext.create('Ext.container.Container', 布局:'vbox' ,项目:[ Ext.create('MyApp.view.MyGridView', // 配置 ) ] ); 使用别名,我们输入:

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

Ext.create('Ext.container.Container', 布局:'vbox' ,项目:[ xtype:'mygrid' // 配置 ] ); 后者比前者少了大约 20 次击键。现在想象一下,您需要在更大的应用程序中使用您的类数百次。很明显,xtype 节省了相当多的打字时间,而不是说要减少长名称中出现拼写错误的风险。

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

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

我要提到的最后一个好处,也是非常重要的,是代码可读性和可维护性的极大改进。代码不会只写一次就被遗忘,而是会被许多开发人员阅读、调试和修改,所以一切使它更短、更好、更容易理解的东西都很重要

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

【讨论】:

“因此,xtype 可以节省内存”不正确。实例是在容器初始化时创建的,无论它们是否是 xtypes。 你能解释一下吗? @EvanTrimboli

以上是关于在类上配置别名有啥需要?的主要内容,如果未能解决你的问题,请参考以下文章

“关键字”和“别名类型”有啥区别? [复制]

C# 命名空间别名 - 有啥意义?

德国牧羊犬别名又叫德国黑背,德国牧羊犬有啥需要了解的呢?

Mockery 中的重载和别名有啥区别?

MyBatis的别名注解失效问题

Mybatis从入门到入土——别名配置文件以及引入mapper