什么是Ext(ExtJs)【转载】

Ext发展史  

  1、第一只“出海”的YUI-Ext只是作者Jack打算对基于BSD协议的Yahoo!UI库进行自定义的扩展,但后来一度风头盖过其父辈YUI,足以说明 大家对它的热情,很多人把它投入项目人并不十分了解它。分析人士打了一比喻:就好比尚未谋面, 并不了解一个人的家庭、教育、品行等背景,只因为他有一副精致漂亮的外观,就对其陷入了疯狂的倾慕之中。因此分析人士建议,在投入项目前,要认真仔细地了 解EXT的内在原理和与其他Ajax库不同地方。

  2、在2006年初 ,Jack Slocum(杰克斯·洛克姆 ) 就一套公用设施扩建为Yahoo! User Interface (YUI) 库而工作。这些扩展很快组织成一个独立的库代码并以” yui-ext” 的名义下发布。

  3、在2006年秋天,Jack发行了版本为0.33的yui-ext,而最终被证明为最后版本的代码,根据这名字(下开放源代码DSB许可)。在年底之前,这个库已大受欢迎, 名字被简化为Ext,反映了它作为一个框架的成熟和独立。

  该公司成立于2007年初,Ext现在为双执照,使用LGPL和一个商业执照。

  4、在2007年4月1日,发布1.0正式版。

  5、直至今日(2008年4月1日)ExtJS已发展涵盖美国、日本、中国、法国、德国等全球范围的用户,现在的版本为Ext-3.0

  6、官方在2009年4月14-16日的首次Ext Conference中发布了Ext的3.0 RC版本。

什么是EXT

  1、ExtJS可以用来开发RIA也即富客户端的AJAX应用,是一个用javascript写的,主要用于创建前端用户界面,是一个与后台技术无关的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用中。ExtJs最开始基于YUI技术,由开发人员JackSlocum开发,通过参考JavaSwing等机制来组织可视化组件,无论从UI界面上CSS样式的应用,到数据解析上的异常处理,都可算是一款不可多得的JavaScript客户端技术的精品。

  2、Ext的UI组件模型和开发理念脱胎、成型于Yahoo组件库YUI和Java平台上Swing两者,并为开发者屏蔽了大量跨浏览器方面的处理。相对来说,EXT要比开发者直接针对DOM、W3C对象模型开发UI组件轻松。

ExtJs UI Engine简介

  ExtJs初期仅是对Yahoo! UI的对话框扩展,后来逐渐有了自己的特色,深受网友的喜爱。 发展至今, Ext除YUI外还支持Jquery、Prototype等的多种JS底层库,让大家自由地选择。该框架完全基于纯Html/CSS+JS技术,提供丰富的跨浏览器UI组件,灵活采用JSON/XML数据源开发,使得服务端表示层的负荷真正减轻,从而达到客户端的MVC应用!

  ExtJs支持多平台下的主流浏览器 Internet Explorer 6+ FireFox 1.5+ (PC, Mac) Safari2+、Opera9+。在使用的厂家包括IBM、Adobe、Cisco和更多。ExtJs官方网站www.extjs.com

Ajax主流框架与ExtJS

  JQuery、 Prototype和YUI都属于非常核心的JS库。虽然YUI,还有最近的JQuery,都给自己构建了一系列的UI器件(Widget),不过却没有一个真正的整合好的和完整的程序开发平台。哪怕是这些低层的核心库已经非常不错了,但当投入到真正的开发环境中,依然需要开发者做大量的工作去完善很多缺失之处。而Ext就是要填补这些缺口。主流开源框架中只有Dojo像Ext一样,尝试着提供整合的开发平台。相比Dojo这个出色的工具包,我们认为 Ext能提供一个粘合度更高的应用程序框架。Ext的各个组件在设计之时就要求和其它Ext组件组合一起工作是无缝合作的。这种流畅的互通性,离不开一个紧密合作的团队,还必须时刻强调设计和开发这两方面目标上的统一,而这点是很多开源项目未能做到的。从构建每一个组件开始,我们始终都强调组件的外观、性能、互通性和可扩展性,而我们认为组件已经达到了这几点的要求。

  Ext绝对可以单独使用。实际上,除了有特定的要求,推荐单独使用Ext,这样的话文件占位更小,支持和整合也更紧密。我们也支持与jQuery、 YUI或Prototype整合使用,作为低层库的角色出现,以提供处理各种核心的服务,如DOM和事件处理,Ajax连接和动画特效。使用整合方式的一个原因是它们已具备了一些特定的器件而Ext并没有原生支持——像YUI的History控件便是一个典型的例子。这时,Ext需要依赖YUI这个库的底层来实现History控件,这样一来的话也可免去Ext自身底层库,从而减少了整个程序的内存占用。另一个使用整合方式的原因是,对于许多已在使用其他底层库的程序,你可能希望逐步加入Ext。总之,如果已经有了其他库,Ext可已利用它们。我们的宗旨是为用户提供各种可能性和性能上的优化。而事实是,只要实现了相对应的底层库接口,为任意一个框架添加上适配器是没有问题的——人们可以轻松地将Dojo、Moo、Ajax.NET,或其它JS库转变为 Ext的底层。

  Ext从2.x开始收费,这给他的应用前景带来一些问题。不过对国内开发人员的影响不大,毕竟是客户付款。

Ext学习及应用经验小结

  一、理解Html DOM、Ext Element及Component

  要学习及应用好Ext框架,需要理解Html DOM、Ext Element及Component三者的区别。

  Ext是基于Web的富客户端框架,其完全是基于标准W3C技术构建设的,使用到的都是HTML、CSS、DIV等相关技术。Ext最杰出之处,是开发了一系列非常简单易用的控件及组件,我们只需要使用这些组件就能实现各种丰富多彩的UI的开发。

  无论组件有多少配置属性、还是事件、方法等等,其最终都会转化为HTML在浏览器上显示出来,而每一个HTML页面都有一个层次分明的DOM树模型,浏览器中的所有内容都有相应的DOM对象,动态改变页面的内容,正是通过使用脚本语言来操作DOM对象实现。

  仅仅有DOM是不够的,比如要把页面中的某一个节点移到其它位置,要给某一个节点添加阴影效果,要隐藏或显示某一个节点等,我们都需要通过几句 javascript才能完成。因此,Ext在DOM的基础上,创建了Ext Element,可以使用Element来包装任何DOM,Element对象中添加了一系列快捷、简便的实用方法。

  对于终端用户来说,仅仅有Element是不够的,比如用户要显示一个表格、要显示一棵树、要显示一个弹出窗口等。因此,除了Element以外,Ext 还建立了一系列的客户端界面组件Component,我们在编程时,只要使用这些组件Componet即可实现相关数据展示及交互等,而 Component是较高层次的抽象,每一个组件在渲染render的时候,都会依次通过Element、DOM来生成最终的页面效果。

  在使用Ext开发的应用程序中,组件Component是最高层次的抽象,是直接给用户使用的,Ext Element是Ext的底层API,主要是由Ext或自定义组件调用的,而DOM是W3C标准定义的原始API,Ext的Element通过操作DOM 来实现页面的效果显示。

  在Ext中,组件渲染以后可以通过访问组件的el属性来得到组件对应的Element,通过访问Element的dom属性可以得到其下面的DOM对象。另外,我们可以通过通过Ext类的快捷方法getCmp、get、getDom等方法来得组件Component、Ext元素Element及DOM节点。比如:

  var view=new Ext.Viewport();//创建了一个组件Component

  view.el.setOpacity(.5);//调用Element的setOpacity方法

  view.el.dom.innerHTML="Hello Ext";//通过Element的dom属性操作DOM对象

  再看下面的代码:

  var win=new Ext.Window({id:"win1",title:"我的窗口",width:200,height:200});

  win.show();

  var c=Ext.getCmp("win1");//得到组件win

  var e=Ext.get("win1");//根据id得到组件win相应的Element

  var dom=Ext.getDom("win1");//得到id为win1的DOM节点

  二、熟悉ext组件体系

  Ext2.0对整个框架进行了重构,最为杰出的是推出了一个以Component类为基础的组件体系,在Component类基础上,使用面向对象的方法,设计了一系列的组件及控件。因此,要能游刃有余地使用Ext,熟悉Ext组件体系是最基本的。

  

  三、掌握核心控件 

  控件其实也是组件,比如用于显示树信息的TreePanel、用于显示表格的GridPanel及EditorGridPanel,还有代表应用程序窗口的Ext.Window等都属于Ext控件。在使用Ext的时候,一定要掌握一些核心控件,特别是处于基类的控件。比如上面提到的几个控件,他们都是继承于面板Panel,所以我们要重点掌握面板这个核心控件的特性。比如面板由以下几个部分组成:一个顶部工具栏(tbar)、一个底部工具栏(bbar)、面板头部(header)、面板尾部(bottom)、面板主区域(body)几个部分组成。面板类中还内置了面板展开、关闭等功能,并提供一系列可重用的工具按钮使得我们可以轻松实现自定义的行为,面板可以放入其它任何容器中,面板本身是一个容器,他里面又可以包含各种其它组件。只要掌握了Panel的应用,那么学习TreePanel、Window等就会变得简单得多。

  同样的道理,对于Ext的表单字段来说,不管是ComboBox,NumberField、还是DateField,他们其它都是 Ext.form.Field类的子类,在他上面定义了表单字段的各种基本操作及特性。在学习使用表单字段组件时,一定要重点研究Field这个类,掌握他的主要方法、事件等,就能有助于更好的学习使用其它的字段。

  四、学习及研究示例

  由于javascript语言非常灵活,不像静态强类型语言(比如Java)那样有固定的代码设计模式,而往往是不同的人就有不同的编程风格。在实际应用开发中,只有见多识广,才能在自己的在脑中建立一个开发库。

  学习别人的示例对于我们开发帮助会非常大,示例包括基本组件的应用、综合应用等多个方面。在此,简单推荐几个。

  1、Ext官方示例,在ext项目下载包的examples目录中,包括各个控件的基本应用演示,同时还有一些比较复杂的组合示例,有简有繁,非常适合初学者认真研究。

  

  2、其它示例,在ext社区中还有很多比较优秀的ext应用示例,有些只是一个应用演示,虽然没有提供源码下载,但我们可以直接下载引用的js文件来得到这些示例的ext应用代码,同样能取起到非常好的学习效果。

  

  五、读Ext项目的源代码

  如果要想深入应用Ext,那么阅读Ext项目的源代码这是必不可少的环节,Ext的代码质量非常高,通过阅读他的代码我们可以更加深刻的了解 javascript面向对象编程,Ext代码中包含了很多高级的js技巧以及设计模式。在使用Ext的过程中,我们经常根据项目的需要对Ext组件进行扩展,设计自己的组件或控件,而如何实现一个自定义的Ext组件,我们可以从Ext的各个组件源代码中找到答案。

  Ext的源代码在Ext项目的source目录。读Ext源码,并不一定非要从某一个地方开始,而组件核心代码Component.js、容器组件代码 Container.js、面板Panel.js等这些是必看的; core目录中的Element.js、Ext.js等也是必看的。当需要从一个控件进行扩展的时候,最好能简单看一看这个控件的源代码。

转载于:https://www.cnblogs.com/alexzp/archive/2011/12/28/2304286.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/422614.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zabbix mysql主从_zabbix监控mysql主从状态

1. zabbix客户端编辑脚本 /tmp/shell/mysql_slave_status.sh#! /bin/bash/usr/bin/mysql -p123456 -e ‘show slave status \G;‘|grep -E "Slave_IO_Running|Slave_SQL_Running"|awk ‘{print $2}‘|grep -c "Yes"2. 授执行权限chmod x mysql_slave_statu…

Delphi7函数大全

首部 function Languages: TLanguages; $[SysUtils.pas功能 返回系统语言对象说明 通过此函数可以得到系统的语言环境参考 type SysUtils.TLanguages例子 ///Begin Languagesprocedure TForm1.Button1Click(Sender: TObject);var I: Integer;begin Memo1.Clear; for I …

ffmpeg命令 抓屏_使用FFmpeg从视频中截图的命令 | 学步园

截取一张352x240尺寸大小的,格式为jpg的图片:ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352x240 a.jpg把视频的前30帧转换成一个Animated Gif :ffmpeg -i test.asf -vframes 30 -y -f gif a.gif目前还没有找到截取…

[恢]hdu 1019

2011-12-16 04:10:41 地址&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1019 题意&#xff1a;求n个数字的最小公倍数。 mark&#xff1a;lcm(a,b,c) lcm(a,lcm(b,c))。wa了一次&#xff0c;没注意lcm先除再乘&#xff0c;溢出了。 代码&#xff1a; # include <…

python输入日期时间转换格式_python如何格式化日期?

常用的时间函数如下&#xff1a;获取当前日期&#xff1a;time.time()获取元组形式的时间戳&#xff1a;time.local(time.time())格式化日期的函数(基于元组的形式进行格式化)&#xff1a;&#xff08;1&#xff09;time.asctime(time.local(time.time()))&#xff08;2&#x…

A→CALL→B时防止B程序COMMIT掉A程序文件的方法

PGMA: FFILEA UF K E DISK COMMIT(Switch)*LOVAL SETLL RECFILEA KEY READE RECFILEA 50 eval Switch2CALL PGMB eval Switch1EVAL FIELD1S UPDATE RECFILEA 20 转载于:https://www.cnblogs.com/etsdpt/archive/2012/01/09/2316840.html

mysql 数据库表锁死_mysql 数据库表被锁住了_Mysql数据库表锁死如何处理?

处理方式有如下三种&#xff1a;1.查询不是sleep或者有状态的sqlselect * from information_schema.processlist where command !Sleep or state !2.查询运行中的事务select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_schema.innodb_trx3.查看…

敏捷开发一千零一问系列之二:序言及解决问题的心法(无住)

这是敏捷开发一千零一问系列的第二篇。&#xff08;之一&#xff0c;之二&#xff0c;之三&#xff0c;问题总目录&#xff09;也是般若敏捷系列第十一篇。&#xff08;之一&#xff0c;之二&#xff0c;之三&#xff0c;之四&#xff0c;之五&#xff0c;之六&#xff0c;之七…

ubuntu小企鹅输fcitx入法乱码问题

本教程中的技术资料来自互联网本人只是对其的一个总结并纠正其中的一些小错误和不足&#xff0c;希望能帮到你&#xff01; OK&#xff0c;Lets go! 一、fcitx输入法的安装 安装方法有两种&#xff1a; 1、在ubuntu的软件中心中搜索fcitx 就可以找到fcitx的安装包&#xff0c;傻…

pycharm自带python环境_Pycharm安装+python安装+环境配置

Pycharm工具&#xff1a;1.安装jdk(64位)&#xff1a;jdk-8u65-windows-x64.exe路径&#xff1a;C:\Program Files\Java(默认路径)2.配置环境步骤一&#xff1a;系统变量→新建 JAVA_HOME变量 。变量值填写jdk的安装目录(本人是C:\Program Files\Java\jdk1.8.0_65)步骤二&#…

大学四年, 专业心得

林锐有一本书, 叫做 <<高质量 C/C 程序设计指南>>. 其中附录里有他的一篇十分震撼的文章叫做 <<大学十年>>. 讲述了林锐从大学以来学习的经历和所获得的感想. 我看过后, 内心深深的被触动了, 都是大学 4 年, 为何差距如此之大? 都是学计算机专业, 为何…

HDU 2222 Keywords Search

HDU_2222 今天开始学AC自动机了&#xff0c;这个就是我AC自动机的处女作了。这个题有个小trick就是单词列表中可能有重复的单词&#xff0c;但这些重复的单词应看做不同的&#xff0c;因此建字典树时做标记的时候&#xff0c;把原来的赋值为1的操作变为自加1的操作即可。 最后匹…

java前言_Java Web前言

Java Web是什么&#xff1f;首先我们得搞清楚这个问题&#xff0c;以上是百度百科给出的答案。然后我们抠出关键词&#xff1a;Java技术 web(web服务器和web客户端)以上是Java百度词条给出的答案&#xff0c;通篇浏览可以有个大概的了解同上&#xff0c;建议全篇浏览所以这里我…

转:html id与name区别

id与name的作用,作为标签的标识符,基本上是一样的.name是老方法,id是在name基础上发明的,比name"现代化"一点,用的范围广一点. <A..> 中的name原来(刚发明时)就是用于本页按一下转向过去用的。我们一般认为&#xff1a;ID就像是一个人的身份证号码&#xff0c;…

PHP企业级开发环境配置全攻略-IDE+SVN++(转)

zend studio一直被认为是最好的php IDE&#xff0c;然而zend studio对javascript和css的支持一直很弱。刚刚发布的zend studio 8 加入了javascript调试的功能&#xff0c;对css的支持也改进了。然而zend studio是要收费的。我在这里推荐一套开源免费的可比拟zend studio的php开…

java 生成url_JAVA 通过URL生成水印图

Overridepublic OutputStream watermark1(String ossURL, String logoOsskey, HttpServletResponse response) {lock.lock();OutputStream os null;InputStream imageStreamnull;//水印String logoPath ossService.getOssURL(logoOsskey,bucket);//原图ossURLtry {osresponse…

前端学习(381):CSS3 的视口单位vw、vh实现自适应(带有px,em,rem的简单介绍)

一、px&#xff0c;em&#xff0c;rem&#xff0c;vw的简单介绍 1、px px其实就是像素的意思&#xff0c;全称pixel&#xff0c;也就是图像的基本采样单位。对于不同的设备&#xff0c;它的图像基本单位是不同的&#xff0c;比如显示器和打印机。而我们通常所说的显示器分辨率…

SAP 那点事BW HANA

作为在去年10月份SAP公司大会上隆重推出的产品&#xff0c;不得不提&#xff0c;HANA是十分强大的&#xff0c;它与BW是相辅相成的&#xff0c;但又可以独立于BW之外&#xff0c;虽然建模功能不如BW强大&#xff0c;但是它的ETL较之BW快上了至少10倍以上&#xff0c;速度和可实…

java数组中相同的元素个数_java求两个数组中相同元素出现的次数

法一public class Methodfifth {public void mixed(int array1[], int n1, int array2[], int n2){int i 0, j 0,number0;while (i < n1&&j < n2){if (array1[i] array2[j]){number;i;j;}else if (array1[i]>array2[j]){j;}else if (array1[i] < array2…