`
差沙
  • 浏览: 19312 次
  • 性别: 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
分享到:
评论
53 楼 tsliyangyang 2008-10-02  
好帖子,mark下,留作纪念。正想学习下
52 楼 x7t7 2008-09-25  
一个字,好,
谢谢版主的分享
51 楼 piratesir 2008-09-10  
地地道道地地道道地地道道地地道道
50 楼 Danielw 2008-08-19  
支持,支持
49 楼 just4you 2008-07-17  
写的不错,对我有帮助。
48 楼 cnetwei 2008-06-27  
key 写道
不错,目前正有一个项目需要用到EXT2.0,版本能不能介绍一下EXT里面怎么去调用Action?
支持!!


对于后台Action的调用可以通过AJAX,也可以通过FormPanel,还有很多的方式,如果有必要的话 你可以参考一下:http://www.iteye.com/topic/207901
47 楼 cnetwei 2008-06-27  
支持一下楼主。

另外:
kaki 写道
如果能够把EXT+DRW+SPRING整合在一起就好了。


最近我学习EXT的过程中 做了一个数据库浏览工具,就是使用了 EXT + SpringMVC,中间没有使用DRW 而仅仅是传递JSON。如果有兴趣的话 你可以关注一下:http://jdbexplorer.googlecode.com

46 楼 csy2008 2008-05-09  
不错,学习下,Exjs是很好的框架。
45 楼 ironicshuang 2008-04-23  
太好了,来点strusts的应用
44 楼 magicyang918 2008-01-29  
哎,大家都说是好帖,可我还是看不懂.还是太菜了啊.
43 楼 stormd 2008-01-24  
One Application One Page
42 楼 shocking2001 2008-01-24  
OAOP是什么,如何理解。在google上都没有找到。请帮忙解释下。
41 楼 taox 2008-01-15  
加油LZ,支持你了。
40 楼 magicyang918 2008-01-13  
好,我也刚开始学习EXT。
不好学啊。
39 楼 tonynju 2008-01-11  
支持一下 正在学习EXT
38 楼 kevin_liu 2008-01-11  
恩 公司最近正在推EXT, 有玩wicket 的兄弟碰个头来
37 楼 javaeye2008 2007-12-19  
呵呵  说的很好   不仅仅让我学习了EXTJS知识  而且让我对JSON有的更进一步的了解,非常感谢  希望继续加油为我们指点方向
36 楼 zhanjia 2007-12-11  
俺公司也用Ext, 而且还用的不少, 大伙努力啦, 用它不是最重要的, 研究源码才是目标!!
35 楼 stevenwang 2007-12-07  
分析的不错,不过我到处都搜索不到Ext.reg这个方法,不知道lz是从哪里看到这个用法和解释的,我现在正在研究Extjs提供的示例,总体感觉不够细致,难度偏大了点。
示例中对控件的用法讲的讲的透。
期待更好的研究文档面试。能够节省很多学习的时间。
34 楼 anxuening 2007-12-05  
很好,继续努力!!!!

相关推荐

    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 或者想构建类似应用的开发者来说是非常宝贵的资源。 ...

    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组件的...

    仿EXT风格JS.rar

    - **丰富的图表组件**:EXT JS包含了多种图表类型,如柱状图、饼图、线图等,可用于数据可视化。 2. **后台首页的设计原则** - **简洁明了**:后台首页通常需要快速展示关键信息,因此设计应简洁,避免过多的装饰...

Global site tag (gtag.js) - Google Analytics