- 浏览: 844227 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (530)
- Java编程 (64)
- C/C++/D (6)
- .Net/C# (9)
- Ruby (12)
- JavaScript (77)
- XML (1)
- JSON (1)
- Ajax (17)
- ExtJs (81)
- YUI (1)
- JQuery (7)
- DWR (1)
- HTML (7)
- CSS (7)
- Database (6)
- PowerDesigner (23)
- DB2 (2)
- Oracle (57)
- MS SQL Server (8)
- MySQL (6)
- JSP/Servlet/JSTL/TagLib (3)
- Spring (1)
- Hibernate (0)
- iText (0)
- Struts (0)
- Struts2 (0)
- iReport (0)
- FreeMarker (0)
- HttpClient (1)
- POI (6)
- FckEditor (15)
- Eclipse / MyEclipse (10)
- IntelliJ IDEA (0)
- NetBeans (0)
- Tomcat (11)
- WebLogic (1)
- Jboss (3)
- jetty (4)
- IIS (2)
- CVS/VSS (1)
- FTP (1)
- Windows/DOS (6)
- Linux/Unix (0)
- 软件建模 UML (0)
- Design Pattern & Thinking In Programming (10)
- 数据结构与算法 (12)
- 软件项目管理 (9)
- 行业应用解决方案 (3)
- 电脑软件与故障解决 (13)
- 编程语言 (1)
- 十万个为什么 (3)
- JBPM (2)
- sysbase (2)
- JDBC (8)
- Ant (2)
- Case-计算机辅助软件工程 (1)
- WebService (4)
- 浏览器 (1)
最新评论
-
gaoqiangjava:
同一楼,还请大手帮解决
JAVA读取word文件 -
hyl523:
// 判断数组中的第一个值是否未定义,如果未定义,便定义为空对 ...
javascript面向对象之二 命名空间 -
ping12132200:
ping12132200 写道我抱着个错不是因为:body标签 ...
extjs在IE报对象不支持此属性或方法 -
ping12132200:
我抱着个错不是因为:body标签内的第一个元素不能为文本tex ...
extjs在IE报对象不支持此属性或方法 -
fireinjava:
呀,不错,转走了,谢谢啦~
利用OpenOffice将word转换成PDF
组件正是extJs的亮点所在,像平常要用的Ext.Window、Ext.tabpanel都是我们最喜欢的好东西。要彻底弄清楚这中间的机制啊。
我查到了一些参考资料:
Ext组件结构分析
Ext组件概述
Ext组件模型概况
Ext组件的生命周期
Ext.Component的Render方法详解
ExtJs实用开发教程
asp.net中使用JSON
Ex的树组件的使用(从底层到表现到异步加载)
本来打算仔细分析一下Observable、Component、BoxComponent、Container这几个基类的源代码,但是不巧,正好看到了上面列出的教程中的“ExtJs实用开发教程”,这个系列教程写得太好了,以至于只要看一看教程就可以写出满足常见需求的代码来。而且,有了它,对于所有组件使用都有了一个大概映像。不至于不晓得如何下手,而非得去啃代码了。万岁啊。
现在大概映像有了。继续看代码。
Observable类是整个组件架构的最顶层的类。它的用途就是为组件提供统一的事件管理接口,有人问?怎么又是事件管理啊。 Ext.Element不是已经封装了事件管理的机制了吗?也有人问:不是有了Ext.Element了吗,为什么还要Ext.Component呢?其实这两个问题是一件事。
Component是组件,组件不是一个元素,而是若干个元素的有机集合。Element的确是有事件,但是,组件的事件不同于元素的事件,它是一个更高级别的概念。
Observable类没什么了不起的。事件管理吗?其本质就相当于c#/java中的容器类,原理就是内置一个数组或者是{},然后提供一个接口来add、remove、removeAll、find。这些东西在c#/java中早就炒得滚瓜烂熟了。而所谓的addEvents方法本质就是为一个map加了一群的key。找到代码,果不其然,就是依赖于this.events,它初始值为{}。它怎样实现事件的注册、反注册、事件包装呢?说出来也蛮容易。内部依托于一些容器(像数组、json对象),然后把所有的要监听的元素、监听元素的事件、事件处理函数、scope、options都保存在里面,时机一至就fireEvent了。怎么包装事件呢?那段代码我也没有去看了,方法无法两种:
一、对于原本就有事件,类为对应元素创建一个默认处理函数,在这个处理函数里面会FireEvent对应元素此事件的事件处理函数。
二、原本没有事件,像Ext.Component的beforeDestory之类的事件,这种事件就要自己在相应的地方手工FireEvent了。
Ext.Component类,这是个很重要的类。对此我只有两点要介绍:
一、关注它的config。组件构造函数的形参Ext.Element/String/Object。最为重要的是,形参可以是一个json对象,对于这个对象的各个成员的意义,这个是以后写代码的关键,例如:
var wnd=new Ext.Window({titile:"这是伯平的标题栏",html:"这是窗口的内容!",width:400,height:300,layout:"fit"});
上面代码是创建一个简单的div窗口,这是最普通的构造了,一般,还有一个items的成员,在它里面定义窗口的内容。items是一个数组,不过我与大伙一样都会产生一个疑问:只凭一个数组就能定义窗口吗?那些窗口成员的位置、大小怎么搞呢?关于样式,当然可以为每个数组成员填加一个成员 cls,用它设class。但是,布局呢?难道全部是absolute不成?有门的。你看上面定义窗口的时候不是有一个layout吗?fit是一种布局方式,它的作用是,容器中只能一个可见成员,且这个成员会填充满整个容器。关于布局类这些东西,作者是参考自java的swing了。现在,就连 dotnet的winforms也有类似的内容了。
二、组件的统一管理,在Ext.Component的构造函数中有如下代码:
Ext.ComponentMgr.register(this);
extJs提供一个全局的类Ext.ComponentMrg。顾名思意:component manager。我跑过去看这个类的源代码,它内部用一个叫:Ext.util.MixedCollection的类来做容器,整个代码很少,加上注释才 100来行。register就是往Ext.util.MixedCollection里面add而己。当然,有add就有remove。这儿也有两个东西要注意:
关于Ext.getCmp(id)
getCmp : function(id){ return Ext.ComponentMgr.get(id); }这是Ext类中的代码,这个get现在能理解它的用途了吧,也就是说,只要一个组件被创建出来,它就会被加到这个容器中来,然后随时可以用它的id取出来继续用。所以,你甚至不用保存创建的组件的实例。可以直接用getCmp取出来。
关于Ext.reg它用于注册一种组件类型,这个东西我在以前也没有发现它的作用,现在看了Ext.Component才明白。且看它的代码:
registerType : function(xtype, cls){
types[xtype] = cls;
cls.xtype = xtype;
}
xtype就是新注册的组件类型,它是字符串,而cls不是class哦,它是这个类对应的function,文档上说是这个类对应的构造函数(就是constructor啦)。真相大白了。
关于Component,我要说的就这么多:一个config,一个组件管理器。
Ext.BoxComponent类
Ext.BoxComponent继承自Ext.Component,它的主要作用是封装元素的设置位置、宽度的功能。有人说,位置、宽度的设置在Ext.Element不是早就封装了一大把吗?这是个编程技巧,在组件这种高层面上,元素是低层面的,应当尽量把这些内部实现的东西隐藏。不然,不管三七二十一什么事都去访问Ext.Component.getEl()方法,然后为所欲为,那就打破了封装性了。这相当于设计模式中的“外观模式”。功能早就有,只是提供一个高层的接口来访问罢了。
Ext.Container类
Ext.Container继承自Ext.BoxComponent。对于它,我先介绍一篇分析得不错的文章!点此处进入。
一句话,这个类是封装布局细节的类,用专业的术语来讲,它是extJs中一堆布局类的外观类,通过它,我们基本上不要去管那些布局细节的事情了,只要在创建组件实例时的config中,加入一个layout:XXXX就成了。如果要对layout初妈化配置,传说中,Ext.Container的config json提供一个叫:layoutConfig的成员。它的详细文档就得看API了。当然,这儿我还是要点一下一些最常用的API。
config object:width/height/activeItem/defaultType/default/items/layout/layoutConfig/listeners/moniterResize
常用属性:items/ownerCt
常用方法:add/insert/remove/findXXXX
你看,这个使用简单啊。那么是不是所有其他组件都是继承自Ext.Container呢。当然不是,只有像Ext.Panel、Ext.TabPanel、Ext.Window这种复合型的组件才是从Ext.Container继承的。
到此为止,一定有人对于使用常用组件有些迫不急待了,点此处让大伙来瞧瞧。
好了,大概就是这样了,下面提供一个ExtJs 2.0的组件结构图:
发表评论
-
extjs在IE报对象不支持此属性或方法
2010-10-06 13:28 2634ExtJS在Firefox里面显示正常,但是用IE打开的时候报 ... -
Ext.grid.EditorGridPanel
2010-10-06 11:38 1619<HTML> <HEAD> ... -
国内首个基于Ext开发开源企业级框架,免费下载!!
2010-07-02 19:47 1817http://www.17ext.com/showforum- ... -
Ext.form.*使用技巧
2010-05-03 12:20 1130设置表单控件为只读: setFieldRead ... -
Ext JS高级插件开发教程
2010-05-03 12:19 1786当创建一个跨浏览器 ... -
项目中常使用的Ext插件
2010-05-03 12:12 1982http://bbs.ajaxjs.com/viewthrea ... -
Ext.ux.DataDrop.js
2010-05-03 12:10 1099http://code.google.com/p/ext-ux ... -
ExtJs 中 xtype 与组件类的对应表
2010-04-26 12:25 2453原文地址:http://blog.sina ... -
iframe in a tab panal
2010-04-11 13:25 1259http://www.extjs.com/forum/show ... -
ext中autoLoad页面中js的问题记录
2010-04-11 12:33 15301.增加script属性,如: var n = this.ad ... -
EXT card布局
2010-01-25 17:17 1581Ext.onReady(function(){ /// ... -
EXT window中加入照片
2010-01-25 17:15 1226Ext.onReady(function(){ ... -
Ext的Card布局示例
2010-01-25 17:14 1274//这个代码就有点通用性了 var navH ... -
Ext card布局
2010-01-25 17:13 1435Ext.layout.CardLayout扩展自Ext.lay ... -
实现Ext.TabPanel中tab内容的更新
2010-01-25 13:19 3091Ext.TabPanel中,如果一个tab项使用了autoLo ... -
Ext.TabPanel中autoLoad实现页面内容加载
2010-01-25 13:18 4016Ext.TabPanel中autoLoad属性可以实现异步加载 ... -
extjs中TabPanel中tab引用页面刷新导致这个页面刷新的问题
2010-01-25 13:16 5574Ext.getCmp('maintab').getActive ... -
SSH+Extjs分页小例子
2010-01-25 13:13 2296刚学,只做了简单的分 ... -
ExtJs是通过Ext.ToolTip和Ext.QuickTips两个组件来实现浮动提示功能的
2010-01-24 23:07 3771Ext.QuickTips QuickTips代码示例:只需 ... -
程序设置Extjs树中CheckBox的选中和取消选中设置
2010-01-22 14:11 4428在Extjs中treepanel中树节点为checkbox类的 ...
相关推荐
24. extJs 2.0学习笔记(组件总论篇) 66 25. extJs 2.0学习笔记(Ext.Element API总结) 69 26. extJs 2.0学习笔记(Element.js篇) 73 27. extJs 2.0学习笔记(DomHelper.js篇) 76 28. extJs 2.0学习笔记(ext.js篇) 77
ExtJS是一种基于JavaScript的开源富客户端框架,特别适用于构建企业级的Web应用程序。...文档《ExtJs2.0学习系列.doc》应包含了关于这些主题的详细教程和示例,是学习ExtJS 2.0不可或缺的参考资料。
1. **组件化设计**:EXTJS 2.0采用组件化的设计理念,将网页元素如按钮、表格、面板等视为独立的组件,可以自由组合和重用。这使得开发者能够快速构建复杂的用户界面,并确保代码的可维护性和可扩展性。 2. **数据...
在深入探讨ExtJs2.0的具体知识点之前,需要明确ExtJs2.0中文手册的主要内容涵盖了框架的安装、配置、组件使用方法、事件处理、数据管理以及高级应用开发等方面。 首先,ExtJs2.0中文手册应该会介绍如何安装和配置...
关于ext学习的资料,有些例子 ExtJs2.0学习系列.CHM
同时,ExtJS 2.0还提供了大量的组件和小部件,如表格、树形视图、菜单、工具栏等。智能提示在这里的作用是提醒开发者这些组件的特性和使用方法,如表格的列配置、树形视图的数据模型等。 在实际开发中,配合支持...
ExtJS 是一个很不错的Ajax 框架,可以用来开发带有华丽外观的富客户端应用,ExtJS 是一个用javascript 编写,与后台技术无关的前端ajax 框架...本教程主要是针对ExtJS2.0 进行介绍,全部代码、截图等都是基于ExtJS2.0。
ExtJS 2.0的API文档详细记录了所有组件、类和方法,便于开发者查阅和学习。同时,提供的示例代码可以帮助快速理解并上手使用。 综上所述,ExtJS 2.0是一个功能强大的AJAX框架,它的组件化开发模式、数据绑定机制...
10. **API文档**:"ExtJS2.0实用简明教程.chm"中详细介绍了2.0版本的API,包括各个组件、方法和事件,是学习和开发的重要参考资料。 在实际开发中,通过阅读并实践这本教程,你可以了解到如何初始化一个ExtJS应用,...
通过深入学习ExtJS 2.0的API和开发指南,开发者可以快速掌握如何利用这个强大的工具来创建高质量的Web应用程序。不过需要注意的是,由于技术的快速发展,更现代的版本如ExtJS 6或7可能引入了更多新特性,因此在实际...
EXTJS2.0是一款强大的JavaScript框架,主要用于构建富客户端...通过学习和理解这个项目,开发者可以深入了解EXTJS2.0在实际项目中的应用,提升自己的Web前端开发技能,同时也能掌握数据库管理和服务器部署的相关知识。
ExtJS是一个很不错的Ajax框架,可以用来开发带有华丽外观的富客户端应用,使得我们的b...本教程记录了前段时间本人学习ExtJS的一些心得及小结,希望能帮助正在学习或准备学习ExtJS的朋友们快速走进ExtJS2.0的精彩世界。
ExtJS2.0实用简明教程和ExtJSapi
ExtJs2.0学习系列大全 共15个word文档,大部分介绍都在里面了
而`ExtJS2.0中文API`很可能是一个包含了详细说明、示例代码和类库参考的文档,对于学习和使用ExtJS 2.0至关重要。 总之,ExtJS 2.0中文API珍藏版是开发者学习和开发ExtJS应用的宝贵资源,结合Adobe AIR,可以实现...
总之,本资源提供了一个关于在 ExtJS 2.0 中创建下拉列表的示例,对于初学者来说是个很好的学习起点。通过阅读和实践这个项目,你可以了解如何设置数据存储、创建下拉列表组件以及如何将它们整合到实际应用中。同时...
"EXT"这个文件名可能是指包含了ExtJS 2.0的示例代码和中文API文档,这对于学习和调试非常有帮助。API文档详细列出了每个类、方法和属性的用法,示例代码则直观展示了如何在实际项目中应用这些API。 总的来说,通过...
这是个关于extjs的教程,在网上找到资料,带图的(好漂亮的界面)。希望对你们有用
通过深入学习EXTJS 2.0 实用教程,你将掌握如何利用EXTJS的强大功能来构建功能丰富的Web应用程序。教程可能涵盖了组件的使用方法、布局配置、数据绑定示例、Ajax通信的实践、以及如何自定义皮肤等内容,对于提升...
ExtJS 2.0 是一个历史悠久的JavaScript框架,主要用于构建富客户端Web应用程序。这个框架以其强大的组件库、...对于学习和理解前端组件化开发、数据绑定以及事件驱动编程等方面的知识,ExtJS 2.0仍具有一定的参考价值。