日期:2014-05-16  浏览次数:20297 次

ExtJs中xtype含义和对照表

转自http://www.yuuzle.com/extjs-xtype-meaning-and-table.html

序言
根据我在论坛上的观察,xtype 用起来的时候疑惑会比较多。甚至有些人根本忽略xtype ,或者不清楚它是什么。所以我决定阐述一下这个xtype的概念。
定义
xtype就是一个代表类(Class)的标识名字。
譬如,你有这个类,名字是Ext.ux.MyGrid。正常情况下你需要用这个名字来实例化这个类(创建类的对象)。
除了类名外,你还可以这样登记类的xtype:
Ext.reg(‘mygrid’, Ext.ux.MyGrid);
其中xtype 是 mygrid 而类名的一般形式是Ext.ux.MyGrid。上面的语句登记了新的xtype ,换种说法说,xtype mygrid 与类 Ext.ux.MyGrid是连在一起的。
到底有什么好处?
试想一下,你手头上的是一个大型的项目,为了响应用户的操作,程序里面包含者大量的对象(windows、forms、grids)。用户点击图标或按钮,就会新建一个窗体,窗体里面又有grid,最终在屏幕上渲染出来。
嗯, 我们回到Ext2.x之前的编码,那时候我们实例化所有对象是页面第一次加载后就进行的(程序代码第一次的运行)。在客户端内存 中,Ext.ux.MyGrid类的对象已经存在,等待用户的点击。 同样是这个grid,假设你上百个的实例,…是多么浪费宝贵的资源啊!很多grid其实用户未必会点击让它出现。
延时实例化
如果你使用xtype,那么在内存中的仅仅是一个配置项对象,像:

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

消耗没有复杂的实例对象来得大。

嗯,用户点击按钮或图标会怎么样呢?Ext会辨认出它是一个准备要渲染的grid但不立刻实例化,Ext在ComponentMgr的帮忙下 明白这么一回事:“如果我要实例化xtype mygrid的对象,我就知道要创建的实际是类Ext.ux.MyGrid的对象”。即如下列代码:

   1:  
create : function
(config, defaultType){  
   2:  
    return
 new
 types[config.xtype || defaultType](config);  
   3:  
}  

等价于:

   1:  
return
 new
 Ext.ux.MyGrid(config);  

然后实例化grid,进行渲染和显示。谨记:需要的时候才实例化

?

xtype??????????? Class

————-??? ——————

box????????????? Ext.BoxComponent 具有边框属性的组件

button?????????? Ext.Button 按钮

colorpalette???? Ext.ColorPalette 调色板

component??????? Ext.Component 组件

container??????? Ext.Container 容器

cycle??????????? Ext.CycleButton

dataview???????? Ext.DataView 数据显示视图

datepicker?????? Ext.DatePicker 日期选择面板

editor?????????? Ext.Editor 编辑器

editorgrid?????? Ext.grid.EditorGridPanel 可编辑的表格

grid???????????? Ext.grid.GridPanel 表格

paging?????????? Ext.PagingToolbar 工具栏中的间隔

panel??????????? Ext.Panel 面板

progress???????? Ext.ProgressBar 进度条

splitbutton????? Ext.SplitButton 可分裂的按钮

tabpanel???????? Ext.TabPanel 选项面板

treepanel??????? Ext.tree.TreePanel 树

viewport???????? Ext.ViewPort 视图

window?????????? Ext.Window 窗口

工具栏组件有

—————————————

toolbar????????? Ext.Toolbar 工具栏

tbbutton???????? Ext.Toolbar.Button 按钮

tbfill?????????? Ext.Toolbar.Fill 文件

tbitem?????????? Ext.Toolbar.Item 工具条项目

tbseparator????? Ext.Toolbar.Separator 工具栏分隔符

tbspacer???????? Ext.Toolbar.Spacer 工具栏空白

tbsplit????????? Ext.Toolbar.SplitButton 工具栏分隔按钮

tbtext?????????? Ext.Toolbar.TextItem 工具栏文本项

表单及字段组件包含:

—————————————

form???????????? Ext.FormPanel Form面板

checkbox???????? Ext.form.Checkbox checkbox录入框

combo??????????? Ext.form.ComboBox combo选择项

datefield??????? Ext.form.DateField 日期选择项

field??????????? Ext.form.Field 表单字段

fieldset???????? Ext.form.FieldSet 表单字段组

hidden?????????? Ext.form.Hidden 表单隐藏域

htmleditor?????? Ext.form.HtmlEditor html编辑器

numberfield????? Ext.form.NumberField 数字编辑器

radio??????????? Ext.form.Radio 单选按钮

textarea???????? Ext.form.TextArea 区域文本框

textfield??????? Ext.form.TextField 表单文本框

timefield??????? Ext.form.TimeField 时间录入项

trigger????????? Ext.form.TriggerField 触发录入项