JavaScript凌厉开发—Ext JS 3详解与实践
基本信息
编辑推荐
本书详细介绍Ext JS框架体系结构,以及利用HTML/CSS/JavaScript进行前端设计的方法和技巧。
作者为Ext中文站站长领衔的三个国内Ext JS先锋,在开发思维和开发经验上有着无可争议的功力。
推荐阅读
内容简介回到顶部↑
本书详细介绍ext js框架体系结构,以及利用html/css/javascript进行前端设计的方法和技巧。作者为ext中文站站长领衔的三个国内ext js先锋,在开发思维和开发经验上有着无可争议的功力。
本书包含的内容有ext.element.*、事件observable、ext组件+mvc原理、grid/form/tree/combobox、ajax缓存store等,并照顾javascript新手,穿插部分javascript基础知识。
本书附带的实例丰富,包括散布各知识点的单独可运行实例、大型ui控件、asp.net新闻发布器、java dwr整合方案、最新通信协议ext.direct、ajax仿资源管理器等。
本书附带光盘中的教学视频时长270分钟,包括从零开始学ext、如何用firebug调试、ext-base.js源码级讲解、实例操作演示和源码评点、可视化ide编程、优化工具的使用等。并附带完整的ext 3.1中文文档。
本书适合广大的web开发人员阅读。
本书包含的内容有ext.element.*、事件observable、ext组件+mvc原理、grid/form/tree/combobox、ajax缓存store等,并照顾javascript新手,穿插部分javascript基础知识。
本书附带的实例丰富,包括散布各知识点的单独可运行实例、大型ui控件、asp.net新闻发布器、java dwr整合方案、最新通信协议ext.direct、ajax仿资源管理器等。
本书附带光盘中的教学视频时长270分钟,包括从零开始学ext、如何用firebug调试、ext-base.js源码级讲解、实例操作演示和源码评点、可视化ide编程、优化工具的使用等。并附带完整的ext 3.1中文文档。
本书适合广大的web开发人员阅读。
作译者回到顶部↑
本书提供作译者介绍
张鑫 JavaScript开源社区JS堂(jstang.cn)站长,Ext中文站(www.ajaxjs.com)站长,EXT JS原作者JACK的中文博客参与维护人。热衷于Web前端开发,在Ajax和Web UI领域功力深厚,国内最早应用EXT JS进行实际项目开发的程序员,EXT热血高手,通过社区、博客、翻译文档等途径不遗余力的推广EXT JS。曾与友人合作编写过《AIR完整入门与开发实录》Ajax AIR的部分。
黄灯桥,2002年起致力于Web开发与应用研究,开源框架发烧友,活跃于各大开源社区,目前醉心于AJAX框架Ext的推广与研究工作,基于Ext开发的很多.. << 查看详细
黄灯桥,2002年起致力于Web开发与应用研究,开源框架发烧友,活跃于各大开源社区,目前醉心于AJAX框架Ext的推广与研究工作,基于Ext开发的很多.. << 查看详细
目录回到顶部↑
第1章 开篇 1
1.1 网络开发浪潮 2
1.2 基于javascript的ria开发观念 3
1.3 风靡世界的ext 3
第2章 ext起步 7
2.1 获取ext的方法 8
2.2 ext运行环境 8
2.3 如何兼容其他javascript库 9
2.4 如何学好ext框架 11
第3章 ext基础 13
3.1 构成界面的元素 14
3.1.1 获取页面元素 14
3.1.2 ext.get()/ext.fly()区别 16
3.1.3 获取周边元素 17
3.1.4 元素的增/删/改/查 18
3.2 元素的高级查询 22
3.2.1 domquery详解 22
3.2.2 composite元素集合 25
3.2.3 css选择符详解 27
3.2.4 id/class拾遗 30
1.1 网络开发浪潮 2
1.2 基于javascript的ria开发观念 3
1.3 风靡世界的ext 3
第2章 ext起步 7
2.1 获取ext的方法 8
2.2 ext运行环境 8
2.3 如何兼容其他javascript库 9
2.4 如何学好ext框架 11
第3章 ext基础 13
3.1 构成界面的元素 14
3.1.1 获取页面元素 14
3.1.2 ext.get()/ext.fly()区别 16
3.1.3 获取周边元素 17
3.1.4 元素的增/删/改/查 18
3.2 元素的高级查询 22
3.2.1 domquery详解 22
3.2.2 composite元素集合 25
3.2.3 css选择符详解 27
3.2.4 id/class拾遗 30
前言回到顶部↑
Web前端设计是近年来业界关注的热点,其中Ajax凭借显著的优势成为优先考虑的计算机软件交付平台。Ajax不算新技术,在许多人眼中只是“旧瓶装新酒”的概念,不过摆在大家面前的是,Ajax像呼吸的空气一样无处不在,有浏览器的地方便有Ajax的市场。在此明显的优势下,催生出许多Ajax GUI库,Ext JS便是其中流行的框架,用户群不在少数。
揭开Ext JS漂亮的外观皮肤,其内部的实现可以说没有太多的新意可言。这样说皆因GUI理论早在Web普及之前就已成熟并在不同平台上加以实现,同属GUI门下的Ext JS只是一个运行于Web的GUI,没有可能也没有必要构建一次新的GUI理论体系。换言之,Ext JS或Ajax GUI的关键任务在于如何采用HTML/CSS/DOM等浏览器技术,进行GUI理论的实践——当然这是非常宏大的命题,背后所覆盖的技术细节、开发的难度、平衡度的拿捏都难以逐一述说。框架的任务正是为了解决此类纷杂的难题,从而为开发者提供清晰、易用、可维护的一线工具集合。不错,既然问题提出了,新型的框架就有必要成为“承前启后”的、成熟的框架,Ext JS也不例外。论起实质,框架的设计要求便是:一边使用较先进的GUI理论体系来支撑整个框架的运作,调度有条不紊;一边告别过去JavaScript组件零散的编码方式,应该是善于利用浏览器技术的优雅编程;另外还要提交易于扩展的、对程序员友好的API接口。
毋庸置疑,值得肯定的是,我国的Ext JS用户群是世界数量第一的Ext用户群。不知读者是否察觉到,官方教程的中文化程度也是最高的,并且围绕API的文档、例子、学习社区/博客资源遍地开花……至于本书作者的任务,则是在“承前启后”的基础上一方面把Ext JS 2.0到3.1的更新部分讲清楚,另一方面是“起承转合”,把Ext认知中的各个环节做个系统的理顺,不回避晦涩之处,让Ext用户学有所用。本书适合广大Web开发人群阅读。
本书各章的主要内容如下。
第1章 开篇
为第一次认识Ext的用户介绍Ext的情况,简单说明Ajax的开发大背景和Ext成长历史。
第2章 Ext起步
这里初步接触了Ext的方方面面,包括获取Ext的方法、运行环境、如何兼容其他JavaScript库等一般问题,其中“如何学好Ext框架”是此章的重点,道破了Ext.extend()继承方法的奥秘。希望读者给予充分的关注,理解作者行文的用意。
第3章 Ext基础
该章正式介绍Ext语法内容,属于整个Ext框架体系之中的基础知识部分。Ext各对象层次中处于最底层、不可分解的对象便为“元素”,因此该章内容很大部分是围绕元素进行的,从Ext.Element对象的用法开始,到HTML模板的应用都有详细的解说。其中CSS选择器的使用和一些实用的DOM方法更是初学者不可缺少的内容。此章难度不大,一般Web程序员可轻松掌握。末尾的一节“制作一个对话框”的例子,开启了我们的GUI组件之旅,同时也呼应了Ext一系列的基础用法,包括引出了后面“事件”的内容,难度正好适中。该章内容适用于Ext JS及其精简库Ext Core。
第4章 Ext事件
事件是GUI的灵魂,抓住了事件就等于理解了GUI编程的要义。许多有经验的开发者都坦言,乐于见到对事件的深入介绍——这就是我们独立安排一章来讨论事件的原因。读者万不可忽略这一章。
就文本内容而言,该章又可粗略地划分为以下三大部分。其一,是浏览器JavaScript事件与Function的用法;其二,是适用于Ext的事件模式机制——Ext.util.Observable类;其三,是例子。该章一开始的时候没有直奔Ext事件的主题,而是如过场般地先向读者介绍登记浏览器事件、事件的处理函数、函数的作用域、Function.apply()/call()等知识,这些完全可作为纯Ajax知识点,如此一来便可作为后面高级事件内容的铺垫和导引,逐级展开。紧接着是Ext的事件体系的引入,说明观察者模式为组件通讯的基本消息模型,指明具体涉及Ext包的哪几个类。由此可见,OO对Ext施加的影响还是很大的。观察者模式是该章的难点之一,可能有部分读者未有设计模式的经验,或不深刻。不过可以放心的是,只要通过阅读这一章的内容,便可充分掌握其奥妙。末段的例子是详述制作一个“打分”Widget的过程,遵循HTML/CSS/JavaScript介绍的三部曲。同样不能忽视的是,例子中也做Ext继承上的横向切入,以求加强对Ext.extend()的说明。
此章内容同样适用于Ext JS及其精简库Ext Core。
第5章 创建图形界面
从该章开始,以介绍理论知识点为先,开篇的时候就介绍新型Ajax架构与旧有DHTML编程的不同。从比较之中进一步理解MVC模式。对于读者正确理解MVC模式至关重要,Ext中屡屡采用的就是MVC模式。又与前4章比较,此章的内容集中于那些“看得见”的UI组件,不仅揭示所谓的“图形界面”如何在Ext中制作出来,而且深入其背后的原理和源码。
Ext 2.0中首次实现了“生存周期”的UI组件模型,Ext 3.0中得到了进一步的加强。“生存周期”与整个架构密不可分,无论哪一个Ext组件都符合“生存周期”的特征。Ext是希望大家扩展API的时候遵循一种良好定义的规则方法,因此学习好“生存周期”的UI组件模型是研究Ext源码或编写扩展组件的前提,所谓“模板方法模式”也是如此。
该章的第二大部分就是介绍Ext组件模型中的Component/Container/Panel/Viewport,此处行文不是铺陈罗列API的要点,而是协助发掘Component/Container/Panel/Viewport的细微之处,诱发自我兴趣来探究。若说完整度,当然API上的介绍比作者的介绍还要完整。
第三部分是“组件的高级应用”,实际上是有关组件各专题的简述,并有例子辅助之。
第四部分“容器的布局”说明各容器之间是怎样布局的。不严格讨论的时候,布局是一种布局“风格”。Ext的Grid也好,Window也好……涉及到UI布局就是表明容器与容器上一级/下一级、外一级/内一级之间的关系。当然这是容器“嵌套”关系之外的另外一种关系。如何将此关系阐述清楚就是该部分的内容。同样地举一反三,我们罗列13种布局风格的时候仅用一个大的例子来说明,但是经常用的AnchorLayout、FormLayout、ColumnLayout就详细说明了拖放操作能够为用户带来相当有价值的UI体验,我们立足于Ext.DD.*的底层去理解Ajax的拖放过程。
揭开Ext JS漂亮的外观皮肤,其内部的实现可以说没有太多的新意可言。这样说皆因GUI理论早在Web普及之前就已成熟并在不同平台上加以实现,同属GUI门下的Ext JS只是一个运行于Web的GUI,没有可能也没有必要构建一次新的GUI理论体系。换言之,Ext JS或Ajax GUI的关键任务在于如何采用HTML/CSS/DOM等浏览器技术,进行GUI理论的实践——当然这是非常宏大的命题,背后所覆盖的技术细节、开发的难度、平衡度的拿捏都难以逐一述说。框架的任务正是为了解决此类纷杂的难题,从而为开发者提供清晰、易用、可维护的一线工具集合。不错,既然问题提出了,新型的框架就有必要成为“承前启后”的、成熟的框架,Ext JS也不例外。论起实质,框架的设计要求便是:一边使用较先进的GUI理论体系来支撑整个框架的运作,调度有条不紊;一边告别过去JavaScript组件零散的编码方式,应该是善于利用浏览器技术的优雅编程;另外还要提交易于扩展的、对程序员友好的API接口。
毋庸置疑,值得肯定的是,我国的Ext JS用户群是世界数量第一的Ext用户群。不知读者是否察觉到,官方教程的中文化程度也是最高的,并且围绕API的文档、例子、学习社区/博客资源遍地开花……至于本书作者的任务,则是在“承前启后”的基础上一方面把Ext JS 2.0到3.1的更新部分讲清楚,另一方面是“起承转合”,把Ext认知中的各个环节做个系统的理顺,不回避晦涩之处,让Ext用户学有所用。本书适合广大Web开发人群阅读。
本书各章的主要内容如下。
第1章 开篇
为第一次认识Ext的用户介绍Ext的情况,简单说明Ajax的开发大背景和Ext成长历史。
第2章 Ext起步
这里初步接触了Ext的方方面面,包括获取Ext的方法、运行环境、如何兼容其他JavaScript库等一般问题,其中“如何学好Ext框架”是此章的重点,道破了Ext.extend()继承方法的奥秘。希望读者给予充分的关注,理解作者行文的用意。
第3章 Ext基础
该章正式介绍Ext语法内容,属于整个Ext框架体系之中的基础知识部分。Ext各对象层次中处于最底层、不可分解的对象便为“元素”,因此该章内容很大部分是围绕元素进行的,从Ext.Element对象的用法开始,到HTML模板的应用都有详细的解说。其中CSS选择器的使用和一些实用的DOM方法更是初学者不可缺少的内容。此章难度不大,一般Web程序员可轻松掌握。末尾的一节“制作一个对话框”的例子,开启了我们的GUI组件之旅,同时也呼应了Ext一系列的基础用法,包括引出了后面“事件”的内容,难度正好适中。该章内容适用于Ext JS及其精简库Ext Core。
第4章 Ext事件
事件是GUI的灵魂,抓住了事件就等于理解了GUI编程的要义。许多有经验的开发者都坦言,乐于见到对事件的深入介绍——这就是我们独立安排一章来讨论事件的原因。读者万不可忽略这一章。
就文本内容而言,该章又可粗略地划分为以下三大部分。其一,是浏览器JavaScript事件与Function的用法;其二,是适用于Ext的事件模式机制——Ext.util.Observable类;其三,是例子。该章一开始的时候没有直奔Ext事件的主题,而是如过场般地先向读者介绍登记浏览器事件、事件的处理函数、函数的作用域、Function.apply()/call()等知识,这些完全可作为纯Ajax知识点,如此一来便可作为后面高级事件内容的铺垫和导引,逐级展开。紧接着是Ext的事件体系的引入,说明观察者模式为组件通讯的基本消息模型,指明具体涉及Ext包的哪几个类。由此可见,OO对Ext施加的影响还是很大的。观察者模式是该章的难点之一,可能有部分读者未有设计模式的经验,或不深刻。不过可以放心的是,只要通过阅读这一章的内容,便可充分掌握其奥妙。末段的例子是详述制作一个“打分”Widget的过程,遵循HTML/CSS/JavaScript介绍的三部曲。同样不能忽视的是,例子中也做Ext继承上的横向切入,以求加强对Ext.extend()的说明。
此章内容同样适用于Ext JS及其精简库Ext Core。
第5章 创建图形界面
从该章开始,以介绍理论知识点为先,开篇的时候就介绍新型Ajax架构与旧有DHTML编程的不同。从比较之中进一步理解MVC模式。对于读者正确理解MVC模式至关重要,Ext中屡屡采用的就是MVC模式。又与前4章比较,此章的内容集中于那些“看得见”的UI组件,不仅揭示所谓的“图形界面”如何在Ext中制作出来,而且深入其背后的原理和源码。
Ext 2.0中首次实现了“生存周期”的UI组件模型,Ext 3.0中得到了进一步的加强。“生存周期”与整个架构密不可分,无论哪一个Ext组件都符合“生存周期”的特征。Ext是希望大家扩展API的时候遵循一种良好定义的规则方法,因此学习好“生存周期”的UI组件模型是研究Ext源码或编写扩展组件的前提,所谓“模板方法模式”也是如此。
该章的第二大部分就是介绍Ext组件模型中的Component/Container/Panel/Viewport,此处行文不是铺陈罗列API的要点,而是协助发掘Component/Container/Panel/Viewport的细微之处,诱发自我兴趣来探究。若说完整度,当然API上的介绍比作者的介绍还要完整。
第三部分是“组件的高级应用”,实际上是有关组件各专题的简述,并有例子辅助之。
第四部分“容器的布局”说明各容器之间是怎样布局的。不严格讨论的时候,布局是一种布局“风格”。Ext的Grid也好,Window也好……涉及到UI布局就是表明容器与容器上一级/下一级、外一级/内一级之间的关系。当然这是容器“嵌套”关系之外的另外一种关系。如何将此关系阐述清楚就是该部分的内容。同样地举一反三,我们罗列13种布局风格的时候仅用一个大的例子来说明,但是经常用的AnchorLayout、FormLayout、ColumnLayout就详细说明了拖放操作能够为用户带来相当有价值的UI体验,我们立足于Ext.DD.*的底层去理解Ajax的拖放过程。
序言回到顶部↑
序 言 (一)
我是很懒的人,认为懒是发展的动力,所以会不遗余力地去寻找合适的开发资源偷懒。因此每次对于时间不赶的任务,都是寻找合适的资源耗费的工作比较多。于是就从DHTML开始一直跟随着技术的发展学习下来,其中经历了HTC、Ajax,收获不少,教训也不少,希望籍此文章能给大家提供一点提示和经验。
DHTML篇
从Web开发开始,就已经知道JavaScript了,不过刚开始对我的作用就是在form提交的时候做基于客户端的验证。大概在2000年的时候,当时层(Div Layer)的概念刚刚兴起,公司有个项目的某个输入位置要输入日期,就突发奇想,其实可以用层做一个JavaScript的日期选择,于是在公司同事的协助下写了第一个DHTML的东西——日期选择器。当时还不懂封装和类什么的,所以就是一个简单的JavaScript函数。然后按图索骥,又写了一个颜色的选择器。不过在公司没干多久就走了,去搞网络,很久没碰Web开发。当再次搞Web开发的时候,技术已经有更高的发展,开始流行HTC了。
HTC篇
HTC的出现是在IE浏览器的统治地位确立后,由微软提出的一个组件化的东西,可惜因为微软的发展方向不在这里,所以也没提供太多的支持和大力发展,随着技术的发展,Firefox等浏览器的兴起,HTC就如昙花一现,不久就再没人问津了。
一般而言,HTC是组件化了的脚本过程。尽管引入浏览器的机制不同,但遵循相同的SDK规范。无论是脚本运行环境,还是DOM文档结构。但HTC有着极高的扩展性。也就是说,HTC可以为我们的HTML引入高级的自定义行为(Behavior)。如自定义的Attribute、Method 或者事件。这就说明,我们可以使用HTC机制来开发一个有着高级特性的、可重用的、可扩展的组件。
接触到HTC也是懒的结果。当时一个项目需要一个既可以输入又可以选择的列表框,于是就满世界地找文档和例程。其实当时自己有个办法是可以实现的,就是在一个select前面放上一个input,用input遮盖住select的显示部分,只留下拉部分,可惜做出来的效果看上去比较难看,而且有很大缺憾,最主要还是懒吧,于是就去搜索现成的更好的解决办法。终于在一个论坛www.51js.com上找到了,是用HTC封装的,感觉效果不错。在论坛上还发现了一个网站www.stedy.com(现在这个网站已经没有了,技术更新太快了),网站上有很多很好的HTC。自己找了一套回来用,可惜啊,好东西是好东西,但是用起来并不是很方便,还要汉化,修改也因为JavaScript经验不足,只能叹气,可惜了!于是继续寻找,找到了Webfx.eae.net,在这里发现宝藏了,其中的toolbar、tree、grid一直用了很长一段时间,许多项目都用上了,从这时候开始感叹JavaScript的神奇,可以实现的东西实在是太多。从这时起就开始固定下了一套开发模板。其中用得最多的HTC是日期选择和mask输入。而在其中的tree已经使用到了XMLHttpRequest,可以说是Ajax开始初露锋芒吧。框架的思想已经开始萌芽了,只是大多都不成熟,俺是懒人啊,自然不去凑热闹了,偏安于自己的模板。但是感觉写起Web应用来还是有点麻烦,不适合懒人啊。
Ajax
随着Web 2.0的报道铺天盖地地砸来,心动啊,因为听说适合懒人。于是就不断收集信息。终于在《程序员》杂志上找到一些框架网站。那还等什么,立马就跑到各大框架网站下载测试版来研究。
1.Qooxdoo
这个是好东西,Widget很多,其开发模式也是习惯了的RAD开发方式。不过一直没用得上,因为没有Splitbar,非常可惜。等了好几个版本居然还没这东西,真的有点晕了。现在终于有了,不过现在更喜欢的是Ext JS,更适合懒人,而且Demo效果看起来比Qooxdoo好多了。还有就是普遍采用JSON的定义方式,我很喜欢。曾经用Qooxdoo做了一个菜单,用的是非常传统的定义方式,一行定义一个菜单条目,然后组合到一个菜单,然后再组合到屏幕——不适合懒人啊。而且同事反映说慢,没办法,我用的那个包足足900多KB,后来找到新的菜单条就立刻更换不用它了。不过看趋势是越来越大了,现在居然到1.1MB了,怕怕。不过Qooxdoo已经被CodeGear Delphi for PHP加入成为开发框架了,前途看来还不错。但是感觉Qooxdoo还有一个缺陷,就是本地化的问题。因为没深入研究,而且Demo也没这方面的信息,所以只是感觉。
2.Dojo
又是一个不错的框架。有我想要的东西,但是Grid功能太弱了,于是没再深入研究,继续等待吧。
3.YUI
也是一个不错的框架。看过演示后,因其Grid功能不是很好,也没再深入研究。
4.jQuery与Prototype.js
忘记了是在搜索什么东西的时候搜索到了这两个框架的。很喜欢这两个框架,曾经在二者之间进行过艰难的选择。jQuery的Widget很多,但是感觉它的代码有点晦涩,可能是太灵活的缘故,有时候看那些Widget的例子简直是看天书。而且对它全部采用正则表达式做全文搜索感觉不是很好,老这样搜索,得花多少时间呢。所以最后还是选择了Prototype。Widget不多就自己想办法变通一下吧。最开始的成果是将网上基于Prototype的Validation的Plugin和正在使用的Smartform的优点进行组合,写自己的校验类,通过一个JSON来定义Form元件的验证。然后写了一个Splitbar,可惜不尽如人意,功力太浅了,这个Splitbar最大的问题就是在窗口的变化后会有很大问题,将就先用着吧,以后再慢慢改。第三个目标就是通过定义JSON自动生成Form和窗口,这个难度不大,就是在如何生成Label和定义宽度上尝试了几种办法,花了不少时间。Prototype确实是一个不错的框架,可惜就是基于上面的开发太少了,很多时候要自己动手,对于懒人来说,实在是太痛苦了。不过终于发现了我一直期待的框架Ext JS,实在是太令我兴奋了。
5.Ext JS
应该怎样来表达我对Ext JS的喜爱呢?无法形容!为什么那么喜爱这个框架?因为适合我这样的懒人啊!适合我习惯的开发方式!其对话框、Layout、Form的组织形式及Toolbar和Menu的组织形式,都是我所喜欢的,也正是我自己想通过Prototype实现的东西,可惜自己做一个框架工程实在太大,所以只能实现部分功能,而且因自己水平有限,实现的功能也不好。现在忽然有一个那么适合我这懒人的东西出现,当然是无比兴奋了!越深入了解Ext JS,越发觉这东西好使。Grid、Layout、Form,一个基本的开发模板也于近日完成了,懒人的未来工作就是复制、粘贴然后修改,轻松啊。
我是很懒的人,认为懒是发展的动力,所以会不遗余力地去寻找合适的开发资源偷懒。因此每次对于时间不赶的任务,都是寻找合适的资源耗费的工作比较多。于是就从DHTML开始一直跟随着技术的发展学习下来,其中经历了HTC、Ajax,收获不少,教训也不少,希望籍此文章能给大家提供一点提示和经验。
DHTML篇
从Web开发开始,就已经知道JavaScript了,不过刚开始对我的作用就是在form提交的时候做基于客户端的验证。大概在2000年的时候,当时层(Div Layer)的概念刚刚兴起,公司有个项目的某个输入位置要输入日期,就突发奇想,其实可以用层做一个JavaScript的日期选择,于是在公司同事的协助下写了第一个DHTML的东西——日期选择器。当时还不懂封装和类什么的,所以就是一个简单的JavaScript函数。然后按图索骥,又写了一个颜色的选择器。不过在公司没干多久就走了,去搞网络,很久没碰Web开发。当再次搞Web开发的时候,技术已经有更高的发展,开始流行HTC了。
HTC篇
HTC的出现是在IE浏览器的统治地位确立后,由微软提出的一个组件化的东西,可惜因为微软的发展方向不在这里,所以也没提供太多的支持和大力发展,随着技术的发展,Firefox等浏览器的兴起,HTC就如昙花一现,不久就再没人问津了。
一般而言,HTC是组件化了的脚本过程。尽管引入浏览器的机制不同,但遵循相同的SDK规范。无论是脚本运行环境,还是DOM文档结构。但HTC有着极高的扩展性。也就是说,HTC可以为我们的HTML引入高级的自定义行为(Behavior)。如自定义的Attribute、Method 或者事件。这就说明,我们可以使用HTC机制来开发一个有着高级特性的、可重用的、可扩展的组件。
接触到HTC也是懒的结果。当时一个项目需要一个既可以输入又可以选择的列表框,于是就满世界地找文档和例程。其实当时自己有个办法是可以实现的,就是在一个select前面放上一个input,用input遮盖住select的显示部分,只留下拉部分,可惜做出来的效果看上去比较难看,而且有很大缺憾,最主要还是懒吧,于是就去搜索现成的更好的解决办法。终于在一个论坛www.51js.com上找到了,是用HTC封装的,感觉效果不错。在论坛上还发现了一个网站www.stedy.com(现在这个网站已经没有了,技术更新太快了),网站上有很多很好的HTC。自己找了一套回来用,可惜啊,好东西是好东西,但是用起来并不是很方便,还要汉化,修改也因为JavaScript经验不足,只能叹气,可惜了!于是继续寻找,找到了Webfx.eae.net,在这里发现宝藏了,其中的toolbar、tree、grid一直用了很长一段时间,许多项目都用上了,从这时候开始感叹JavaScript的神奇,可以实现的东西实在是太多。从这时起就开始固定下了一套开发模板。其中用得最多的HTC是日期选择和mask输入。而在其中的tree已经使用到了XMLHttpRequest,可以说是Ajax开始初露锋芒吧。框架的思想已经开始萌芽了,只是大多都不成熟,俺是懒人啊,自然不去凑热闹了,偏安于自己的模板。但是感觉写起Web应用来还是有点麻烦,不适合懒人啊。
Ajax
随着Web 2.0的报道铺天盖地地砸来,心动啊,因为听说适合懒人。于是就不断收集信息。终于在《程序员》杂志上找到一些框架网站。那还等什么,立马就跑到各大框架网站下载测试版来研究。
1.Qooxdoo
这个是好东西,Widget很多,其开发模式也是习惯了的RAD开发方式。不过一直没用得上,因为没有Splitbar,非常可惜。等了好几个版本居然还没这东西,真的有点晕了。现在终于有了,不过现在更喜欢的是Ext JS,更适合懒人,而且Demo效果看起来比Qooxdoo好多了。还有就是普遍采用JSON的定义方式,我很喜欢。曾经用Qooxdoo做了一个菜单,用的是非常传统的定义方式,一行定义一个菜单条目,然后组合到一个菜单,然后再组合到屏幕——不适合懒人啊。而且同事反映说慢,没办法,我用的那个包足足900多KB,后来找到新的菜单条就立刻更换不用它了。不过看趋势是越来越大了,现在居然到1.1MB了,怕怕。不过Qooxdoo已经被CodeGear Delphi for PHP加入成为开发框架了,前途看来还不错。但是感觉Qooxdoo还有一个缺陷,就是本地化的问题。因为没深入研究,而且Demo也没这方面的信息,所以只是感觉。
2.Dojo
又是一个不错的框架。有我想要的东西,但是Grid功能太弱了,于是没再深入研究,继续等待吧。
3.YUI
也是一个不错的框架。看过演示后,因其Grid功能不是很好,也没再深入研究。
4.jQuery与Prototype.js
忘记了是在搜索什么东西的时候搜索到了这两个框架的。很喜欢这两个框架,曾经在二者之间进行过艰难的选择。jQuery的Widget很多,但是感觉它的代码有点晦涩,可能是太灵活的缘故,有时候看那些Widget的例子简直是看天书。而且对它全部采用正则表达式做全文搜索感觉不是很好,老这样搜索,得花多少时间呢。所以最后还是选择了Prototype。Widget不多就自己想办法变通一下吧。最开始的成果是将网上基于Prototype的Validation的Plugin和正在使用的Smartform的优点进行组合,写自己的校验类,通过一个JSON来定义Form元件的验证。然后写了一个Splitbar,可惜不尽如人意,功力太浅了,这个Splitbar最大的问题就是在窗口的变化后会有很大问题,将就先用着吧,以后再慢慢改。第三个目标就是通过定义JSON自动生成Form和窗口,这个难度不大,就是在如何生成Label和定义宽度上尝试了几种办法,花了不少时间。Prototype确实是一个不错的框架,可惜就是基于上面的开发太少了,很多时候要自己动手,对于懒人来说,实在是太痛苦了。不过终于发现了我一直期待的框架Ext JS,实在是太令我兴奋了。
5.Ext JS
应该怎样来表达我对Ext JS的喜爱呢?无法形容!为什么那么喜爱这个框架?因为适合我这样的懒人啊!适合我习惯的开发方式!其对话框、Layout、Form的组织形式及Toolbar和Menu的组织形式,都是我所喜欢的,也正是我自己想通过Prototype实现的东西,可惜自己做一个框架工程实在太大,所以只能实现部分功能,而且因自己水平有限,实现的功能也不好。现在忽然有一个那么适合我这懒人的东西出现,当然是无比兴奋了!越深入了解Ext JS,越发觉这东西好使。Grid、Layout、Form,一个基本的开发模板也于近日完成了,懒人的未来工作就是复制、粘贴然后修改,轻松啊。
媒体评论回到顶部↑
RIA和Ajax都是目前软件开发领域里的热点词汇,也确实有很多网站正在或者计划采用这些技术。Ext以其稳定性、易用性和可维护性的特点,成为Ajax框架中的领先者。张鑫领衔撰写的这本书详细介绍了Ext,比如事件机制、数据驱动、扩展插件和优化等,对想深入探索Ext的技术人员很有帮助。
InfoQ中文站(infoq.com/cn)总编辑 霍泰稳
Ext作为一个优秀的javascript框架,不仅能在编写简单的javascript应用程序时提高效率,而且能在构建复杂的Web应用程序提供各种用户交互界面。而《JavaScript凌厉开发——Ext详解与实践》作为一本学习Ext框架的入门手册既揭开了Ext神秘的面纱,也可以作为Web前端开发人员的参考资料,值得一读。
jQuery中文社区站长 杨乐(yorsal)
Ext是迄今为止最完整最优雅的Web UI开发平台之一,它的出现使Web程序员真正具备了独立设计UI的能力。
该书是国内少有专注于Ext研究的著作,也是一本难得的AJAX实战指导教材。
jsvm.org创始人、资深Ajax开发者 万常华
很高兴听见Frank要出版ExtJS的中文教学,在Ext还在萌芽阶段时,Frank就已投身Ext的教学行动并无私地在网路上分享学习心得。 这也是我与和Frank交流的开始。
ExtJS是一套结构严谨及功能强大的Framework,没有相当程度的程式功力及架构学识,学习ExtJS是会遭遇到相当大的困难,最后因为不得其门而入,最后选择放弃。
如今包括Frank一共三位作者投入心力及时间为ExtJS写出《JavaScript应用开发--Ext详解与实践》实在是大家的福气. 因为网络上的官方文件都是英文,对于我们的理解能力都是相当吃力的,如果没有透过适当的导引,仍无法一眼以观全貌。而且本书内容结合了作者的开发经验,去粗取精,尤其体现在项目开发的内容上,具有相当大的价值。
就让Frank、灯桥、彦强带着大家,循序渐进地体验ExtJS 这套强大而优美Franmwork吧!
欧力资讯企业有限公司CEO 简名骏
InfoQ中文站(infoq.com/cn)总编辑 霍泰稳
Ext作为一个优秀的javascript框架,不仅能在编写简单的javascript应用程序时提高效率,而且能在构建复杂的Web应用程序提供各种用户交互界面。而《JavaScript凌厉开发——Ext详解与实践》作为一本学习Ext框架的入门手册既揭开了Ext神秘的面纱,也可以作为Web前端开发人员的参考资料,值得一读。
jQuery中文社区站长 杨乐(yorsal)
Ext是迄今为止最完整最优雅的Web UI开发平台之一,它的出现使Web程序员真正具备了独立设计UI的能力。
该书是国内少有专注于Ext研究的著作,也是一本难得的AJAX实战指导教材。
jsvm.org创始人、资深Ajax开发者 万常华
很高兴听见Frank要出版ExtJS的中文教学,在Ext还在萌芽阶段时,Frank就已投身Ext的教学行动并无私地在网路上分享学习心得。 这也是我与和Frank交流的开始。
ExtJS是一套结构严谨及功能强大的Framework,没有相当程度的程式功力及架构学识,学习ExtJS是会遭遇到相当大的困难,最后因为不得其门而入,最后选择放弃。
如今包括Frank一共三位作者投入心力及时间为ExtJS写出《JavaScript应用开发--Ext详解与实践》实在是大家的福气. 因为网络上的官方文件都是英文,对于我们的理解能力都是相当吃力的,如果没有透过适当的导引,仍无法一眼以观全貌。而且本书内容结合了作者的开发经验,去粗取精,尤其体现在项目开发的内容上,具有相当大的价值。
就让Frank、灯桥、彦强带着大家,循序渐进地体验ExtJS 这套强大而优美Franmwork吧!
欧力资讯企业有限公司CEO 简名骏
评论交流
共有12人开贴评论 14人参与评论 0人参与打分 查看
发表于:2010-6-6 11:26:00
补充一下视频目录:
视频目录如下:
* 01 第一讲 开篇 & 准备工作
1. (a).开篇
2. (b).安装例子与安装文档中心
* 02 第二讲 Ext源码探胜
1. (a).ext.js总的文件.avi
2. (b).ext-base底层库之一至三.avi
* 03 第三讲 了解Widget
1. (a).ext.js总的文件.avi
2. (b).Menu&Tabs部件.avi
3. (c).画册carsoul.avi
4. (d)Widget数据绑定方式:JSONP.avi
* 04 第四讲 PetStore范例:DeepBlog讲解
1. (a).安装DeepBlog程序.avi
2. (b).可扩展的组件.avi
3. (c).Ext.Action.avi
4. (d).数据源.avi
* 05 第五讲 Ext设计师
1. (a)设计师一至三.avi
* 06 第六讲 IDE、工具
1. (a).JSBuilder 1.0.avi
2. (b).JSBuilder 2.0.avi
3. (c).JSA压缩.avi
4. (d).IDE简介.avi
* 07 第七讲 AJAX开发的调试
1. (a).Firefox的调试.avi
2. (b).IE的调试.avi
3. (c).HTTP调试工具fiddler.avi
* 08 第八讲 (附录)运行例子的说明
1. (a).文中例程说明.avi
2. (b).SQLServer&新闻管理系统.avi
视频目录如下:
* 01 第一讲 开篇 & 准备工作
1. (a).开篇
2. (b).安装例子与安装文档中心
* 02 第二讲 Ext源码探胜
1. (a).ext.js总的文件.avi
2. (b).ext-base底层库之一至三.avi
* 03 第三讲 了解Widget
1. (a).ext.js总的文件.avi
2. (b).Menu&Tabs部件.avi
3. (c).画册carsoul.avi
4. (d)Widget数据绑定方式:JSONP.avi
* 04 第四讲 PetStore范例:DeepBlog讲解
1. (a).安装DeepBlog程序.avi
2. (b).可扩展的组件.avi
3. (c).Ext.Action.avi
4. (d).数据源.avi
* 05 第五讲 Ext设计师
1. (a)设计师一至三.avi
* 06 第六讲 IDE、工具
1. (a).JSBuilder 1.0.avi
2. (b).JSBuilder 2.0.avi
3. (c).JSA压缩.avi
4. (d).IDE简介.avi
* 07 第七讲 AJAX开发的调试
1. (a).Firefox的调试.avi
2. (b).IE的调试.avi
3. (c).HTTP调试工具fiddler.avi
* 08 第八讲 (附录)运行例子的说明
1. (a).文中例程说明.avi
2. (b).SQLServer&新闻管理系统.avi
发表于:2010-5-4 14:41:00
为在这段时间内让大家解闷,特意提供《Ext详解与实践 v3》阅读补充资料,有书中未补充的内容和翻译的一些教程,原本在我博客上有的,现在打包在下面的文件中,请看官们先过过目:
book.ajaxjs.com/download/plus.zip
货源不断,还有刚翻译的DD拖放教程一并释出《五步掌握Ext的拖放》:
http://blog.csdn.net/zhangxin09/archive/2010/05/03/5551726.aspx
http://blog.csdn.net/zhangxin09/archive/2010/05/03/5551665.aspx
拖放(Drag & Drop)可以增强用户体验。有关这方面需要了解的朋友请参阅。
book.ajaxjs.com/download/plus.zip
货源不断,还有刚翻译的DD拖放教程一并释出《五步掌握Ext的拖放》:
http://blog.csdn.net/zhangxin09/archive/2010/05/03/5551726.aspx
http://blog.csdn.net/zhangxin09/archive/2010/05/03/5551665.aspx
拖放(Drag & Drop)可以增强用户体验。有关这方面需要了解的朋友请参阅。
发表于:2010-5-12 4:00:00
买了他们上一本2.x版本的书,有种上当的感觉,讲的东西实在让我摸不着头脑,当然例子还可以敲敲,为了了解意思,你还必须再结合中文的API勉强才行。。但是这样子的话:有JS基础的人看这本书不如看API,再加网上实例;;;无JS基础的人,补JS基础才是关键,建议看下Javascript高级程序设计,有了基础,这本书又不如实例,,总之看不出这本书出实际开发有什么帮助,也许例子吧。。当然不知道这本3.X版本的怎么样,毕竟经过一年多的时间,作者们的技术及对EXTJS的研究应该更厉害了。。总之我随口说说,没买过的朋友还是可以买一买的
发表于:2010-5-12 9:38:00
@chenzequ:
一、我们翻译中文API的时候,大伙也是除了一光子热情外,花费了时间,精力一点点的不能说没有。至今我还觉得翻译得不够好,还有改进的地方……
二、06年开始接触YUI-ext、Ext,深感其JS之精妙,却不是当下JS知识可以搞掂,于是恶补JS,这也间接后来有所谓的这个书目:JavaScript XX开发,为求可以在领会Ext对象模型的同时,增强JS基础知识。这一点,呵呵,应该说比较客观,比较一下其他的Ext中文出版物自不一览无遗,谢谢。
三、chenzequ谈旧版的问题,是大问题,所以才有第二版的改进,当然希望大家认为是“改进”。第二版与第一版时隔一年多,相信可以更好地呈现3.0的新应用,欢迎登录专题网站:book.ajaxjs.com
ps:chen兄,不妨加加我的QQ:799887651,自有相益于您,希望可以惠及我的读者……^_^
一、我们翻译中文API的时候,大伙也是除了一光子热情外,花费了时间,精力一点点的不能说没有。至今我还觉得翻译得不够好,还有改进的地方……
二、06年开始接触YUI-ext、Ext,深感其JS之精妙,却不是当下JS知识可以搞掂,于是恶补JS,这也间接后来有所谓的这个书目:JavaScript XX开发,为求可以在领会Ext对象模型的同时,增强JS基础知识。这一点,呵呵,应该说比较客观,比较一下其他的Ext中文出版物自不一览无遗,谢谢。
三、chenzequ谈旧版的问题,是大问题,所以才有第二版的改进,当然希望大家认为是“改进”。第二版与第一版时隔一年多,相信可以更好地呈现3.0的新应用,欢迎登录专题网站:book.ajaxjs.com
ps:chen兄,不妨加加我的QQ:799887651,自有相益于您,希望可以惠及我的读者……^_^
| 我要写评论 |
| 查看所有评论交流(共12条) |







点击看大图







加载中...
