`
差沙
  • 浏览: 19430 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Ext的组件结构分析,附Ext组件结构图

阅读更多
相信大家看了Ext2.0后, 印象最深的应该是Ext的组件模式,很好的规范了组件设计,用Manager的统一管理,也是很好的方式.下面简单分析一下Ext的组件结构.

Ext的所有组件都是扩展于Ext.Component, 而后子类扩展和集成形成了一个单根的组件树.
Ext中使用组件的方式很不一样,可以看一个例子.

js 代码
  1. var formPanel = new Ext.form.FormPanel({
  2. items: [{
  3. xtype: 'hidden',
  4. name: 'domainId'
  5. },{
  6. fieldLabel: '姓名',
  7. name: 'name',
  8. allowBlank:false
  9. },{
  10. fieldLabel: '权限',
  11. xtype: 'combo',
  12. name: 'auth'
  13. },{
  14. fieldLabel: '帐号',
  15. name: 'account'
  16. },{
  17. fieldLabel: 'Email',
  18. name: 'email',
  19. vtype:'email'
  20. },{
  21. fieldLabel: '启用',
  22. xtype: 'checkbox',
  23. name: 'enabled'
  24. }
  25. ]
  26. });
如此这样就能实现一个包含了很多元素的表单, items里面定义了表单要显示的输入框等组件,但是items里面仅仅是简单的json对象,怎么能显示出来各种不同的表单元素呢?

我们注意到items的每一个元素几乎都有一个xtype属性,这个xtype属性就是描述组件类的关键.

其实Ext里面的组件(Panel, Form Datepicker等等), 在定义完Class之后, 都会把自己注册到Ext.ComponentMgr里面. 简单看一个box的组件, 在BoxComponent.js文件的最后一行可以看到:

js 代码
  1. Ext.reg('box', Ext.BoxComponent);

而在, ComponentMgr.js文件里
js 代码
  1. // private
  2. registerType : function(xtype, cls){
  3. types[xtype] = cls;
  4. cls.xtype = xtype;
  5. },
  6. // private
  7. create : function(config, defaultType){
  8. return new types[config.xtype || defaultType](config);
  9. }
  10. };
  11. }();
  12. // this will be called a lot internally,
  13. // shorthand to keep the bytes down
  14. Ext.reg = Ext.ComponentMgr.registerType;

其实是执行了registerType 这个方法,方法很简单, 把xtype这个名字和对应的cls放到types里面, 而后看到create 我们应该会明白了, 以后想创建组件的时候,就调用 create({xtype: 'box'}) 就OK了

那么我们看看items里面的元素是怎么创建的吧, form的继承树中有一个Ext.Container类, 恩,就在这个类里呢:

js 代码
  1. // private
  2. lookupComponent : function(comp){
  3. if(typeof comp == 'string'){
  4. return Ext.ComponentMgr.get(comp);
  5. }else if(!comp.events){
  6. return this.createComponent(comp);
  7. }
  8. return comp;
  9. },
  10. // private
  11. createComponent : function(config){
  12. return Ext.ComponentMgr.create(config, this.defaultType);
  13. },

恩,基本就是这样了, 希望对大家理解Ext有所帮助

/************************************************/
附件是我弄的一个Ext的组件结构图, 还附有各个组件的说明, 希望大家喜欢, 大家快下呀....
  • 描述: Ext的组件结构图
  • 大小: 289.3 KB
分享到:
评论
13 楼 hellboy 2007-10-24  
公司项目正在使用EXT,非常常谢谢你的分析,对我很有帮助
12 楼 antonyup_2006 2007-10-24  
ext做的效果确实很漂亮,很有钢切的感觉,不过要做的很漂亮,javasript的功底要好,并且json这类数据载体要熟悉!当然xml也可以表示.
11 楼 duan0175 2007-10-24  
不错不错,慢慢研究
10 楼 jljlpch 2007-10-24  
听说ext2.0是swing的风格。现在一看,发现在大学里花那么时间学习swing原来没有错。在ext2中用到了。当然在wicket中也用到。
我也正想分析一下ext2的源码。好东西,谢谢分享。
9 楼 cheng022074 2007-10-23  
不错,不错,相当不错,要不是,现在正在做ExtJS的项目的话,我也想好好地扩展一下Ext的功能,可惜现在任务太紧了
8 楼 linxizeng 2007-10-22  
不错的介绍。。。虽然现在不用..
7 楼 thinger 2007-10-22  
层次结构比较清楚了..确实如某位所说,越研究越有趣..
6 楼 crabboy 2007-10-22  
这样的文章怎么不鼓励呢!
5 楼 差沙 2007-10-21  
jianfeng008cn 写道
请把自己扩展的都作说明


只有deskview的是自己扩展的, 这个树是动态生成的, 所以自己扩展的也搞了进去,还好只有一个
4 楼 jianfeng008cn 2007-10-21  
请把自己扩展的都作说明
3 楼 lianwu 2007-10-21  
支持哈,能不能来点ext2.0调用action的例子
2 楼 Sean220 2007-10-21  
不错的分享,EXT这样有内容的帖子太少了
1 楼 差沙 2007-10-21  
虽然没有人回,但还是打算继续研究下去,接下来准备分析一下layout

相关推荐

    EXT 组件和控件的 视频教程

    EXT组件和控件是Sencha EXT JS框架的核心部分,它提供了丰富的用户界面元素,用于构建交互式的Web应用程序。EXT Grid是EXT JS中的一个关键组件,主要用于展示和操作表格数据。这个“EXT 组件和控件的 视频教程”很...

    web工程2.0添加ext框架

    在EXT5.0中,组件的可配置选项更多,而且提供了更强大的布局管理,如绝对布局、表单布局、流式布局等,使开发者能更自由地设计UI结构。 其次,EXT5.0改进了数据绑定机制,使得视图和模型之间的数据同步更加自动化。...

    ext2.0项目源代码供大家学习ext使用

    通过分析这个EXT 2.0项目源代码,开发者可以学习如何组织EXT应用程序的结构,如何利用EXT的API创建组件,如何处理数据交互,以及如何实现特定的功能。对于想要提升EXT编程技能或者希望理解EXT内部机制的人来说,这是...

    Ext JS 4 Architecture

    Ext JS 4中的图表组件提供了创建复杂数据可视化的能力,支持多种图表类型,如条形图、折线图、饼图等。动画方面,Ext JS 4提供了一套流畅的动画引擎,可以增强用户体验,让界面变化显得平滑自然。 10. **扩展性...

    ext资源下载,适合一般人开发JS

    在EXT应用开发中,数据通常是通过EXT的数据模型(Model)、数据存储(Store)和视图(View)进行管理的,这些数据文件可能用于模拟实际数据库中的数据,以便于测试和展示EXT组件的功能。 EXT的组件系统是其核心特性...

    EXT ,EXT.chm,ext中文

    4. **高级图表**:EXT提供了多种图表类型,如折线图、柱状图、饼图等,可用于数据可视化。 5. **触摸支持**:EXT Touch是EXT的移动版本,专门用于开发触屏设备上的应用程序。 6. **AJAX通信**:EXT内置了AJAX功能...

    ext 皮肤(不含EXT包)

    EXT皮肤是EXT应用的外观表现,它定义了组件的颜色、字体、边框、阴影等视觉元素,使得EXT组件能够适应不同的设计风格和品牌要求。 EXT框架提供了丰富的组件库,包括表格、树形视图、面板、窗口、表单等,这些组件...

    ext.net.pro.1.0rc1(收藏)

    源代码分析可以帮助开发者自定义组件,调试问题,以及更好地集成EXT.NET到他们的项目中。此外,"包括Demo"意味着这个压缩包还包含了演示示例,这些示例通常展示了EXT.NET组件的各种用法,涵盖了基础到高级的各种功能...

    ext-pivot.zip

    EXT Pivot是一款基于EXT JS库开发的数据透视表组件,它提供了强大的数据分析和数据可视化功能,尤其适合在Web应用中处理和展示大量复杂数据。EXT JS是一个广泛使用的JavaScript框架,用于构建富客户端应用程序,其...

    Learning Ext JS 3.2

    5. **图表和图形**:Ext JS 3.2版本对图表功能进行了增强,支持创建各种数据可视化图形,如柱状图、饼图、线图等,这对于数据展示和分析非常有用。 6. **Ajax和I/O**:通过内置的Ajax和I/O功能,开发者可以方便地与...

    《Ext江湖》代码分析EA工程(请用EA打开)

    通过使用Enterprise Architect(EA)工具打开这个EAP工程文件,我们可以直观地查看和分析Ext框架的类结构、函数关系以及设计模式等重要概念。 首先,让我们了解下Ext JS。Ext JS是一个广泛使用的JavaScript库,它...

    Ext js 网页虚拟桌面

    8. **源代码分析**:对于压缩包中的文件,可以通过查看源代码学习到如何配置Ext JS,如何组织应用结构,以及如何实现特定的桌面功能。这对于想要深入理解Ext JS 或者想构建类似应用的开发者来说是非常宝贵的资源。 ...

    simg2img和ext2explore

    APK是Android应用的安装包,包含所有必要的组件如代码、资源和元数据,可以使用`ext2explore`来定位并提取这些文件,以便于调试、分析或反编译。 总的来说,`simg2img`和`ext2explore`这两个工具为非Linux环境下的...

    ext带电子书带实例

    EXT还包含一套强大的图表组件(Charts),支持创建各种2D和3D图表,如柱状图、饼图、线图等,这在数据分析和展示方面非常有用。EXT的布局管理器则可以根据容器的大小动态调整子组件的位置和大小,确保界面在不同设备...

    EXT 中文帮助手册

    EXT 的API文档是学习和开发的重要参考资料,其中包含了所有EXT组件、配置、方法、事件等的详细说明。`Ext+api+中文版.chm`文件是一个帮助文件,很可能包含了EXT库的完整API翻译,这对于中文使用者来说非常有价值,...

    Ext+JS高级程序设计.rar

    2.3 功能结构图 29 2.4 开发与运行环境 31 2.5 数据库设计 31 2.6 本章小结 34 第3章 Ext Core实例—.NET语言实现 35 3.1 创建应用并设置开发环境 35 3.2 自定义Membership提供程序 37 3.3 创建母版页 38 3.4 首页...

    Ext in Action(Ext3.2)

    - **组件与容器**:Ext JS 中的所有 UI 元素都是通过组件(Component)来表示的,而容器(Container)则用来组织这些组件。组件负责具体的 UI 表现,而容器则负责布局管理。 - **事件驱动**:Ext JS 采用事件驱动...

    ext 2.0 源码 下载

    EXT 2.0是Web开发框架的一个重要版本,主要用于构建富客户端应用,它基于JavaScript,提供了丰富的组件库...通过分析EXT 2.0的源码,你可以学习到优秀的代码组织结构和设计模式,为自己的JavaScript编程技能添砖加瓦。

    纯EXT图书管理系统

    4. `view/main/Main.js` - 应用的主要视图,可能包含数据网格、表单等EXT组件。 5. `controller/Main.js` - 主控制器,负责协调视图和模型之间的交互。 6. `resources/css/app.css` - 应用的样式文件,定制EXT组件的...

Global site tag (gtag.js) - Google Analytics