Dojo向Web开发者和设计者提供了一个强大的JavaScript工具集用以快速开发健壮的Ajax应用。本书是第一本完整的、具有丰富示例的Dojo开发指南,同时还介绍了Dojo Widget。Dojo基金会(即Dojo的创建者们)审阅了本书,你可以从书中找到开发指南和大量经过测试的代码示例。
Web开发专家James E. Harmon在书中首先介绍了如何使用Dojo“Ajax化”现有的应用和页面,如何快速增加一些Ajax特性且不打断用户的操作,如客户端和服务器端验证。接下来,本书深入讲解了Dojo的用户界面、表单、布局和专门的Widget,展示其工作方式并探讨如何最有效地利用这些特性。本书详细地介绍了Widget,如日期选择器、富文本编辑器、组合框及可扩展的视图等。
最后,Harmon介绍了Dojo Toolkit用以简化Ajax开发的强大功能。他详细地介绍了Dojo的辅助功能、快捷方式及特殊方法,在介绍每个特性时展示了它所能解决的JavaScript的问题。这一部分内容涵盖了字符串、JSON、事件处理、Ajax Remoting、Dojo与DOM、测试及调试,等等。你可以从本书的Web站点http://www.Object TrainingGroup.com/dojobook下载所有的代码示例,包括完整教程示例的源代码。
作者简介
James E. Harmon是Object Training Group公司的创建者和讲师,主要从事Java和Ajax的培训。其培训主题涵盖Ajax、Struts、Hibernate、Spring、JavaServer Faces。
无
Dojo向Web开发者和设计者提供了一个强大的JavaScript工具集用以快速开发健壮的Ajax应用。本书是第一本完整的、具有丰富示例的Dojo开发指南,同时还介绍了Dojo Widget。Dojo基金会(即Dojo的创建者们)审阅了本书,你可以从书中找到开发指南和大量经过测试的代码示例。
Web开发专家James E. Harmon在书中首先介绍了如何使用Dojo“Ajax化”现有的应用和页面,如何快速增加一些Ajax特性且不打断用户的操作,如客户端和服务器端验证。接下来,本书深入讲解了Dojo的用户界面、表单、布局和专门的Widget,展示其工作方式并探讨如何最有效地利用这些特性。本书详细地介绍了Widget,如日期选择器、富文本编辑器、组合框及可扩展的视图等。
最后,Harmon介绍了Dojo Toolkit用以简化Ajax开发的强大功能。他详细地介绍了Dojo的辅助功能、快捷方式及特殊方法,在介绍每个特性时展示了它所能解决的JavaScript的问题。这一部分内容涵盖了字符串、JSON、事件处理、Ajax Remoting、Dojo与DOM、测试及调试,等等。你可以从本书的Web站点http://www.Object TrainingGroup.com/dojobook下载所有的代码示例,包括完整教程示例的源代码。
作者简介
James E. Harmon是Object Training Group公司的创建者和讲师,主要从事Java和Ajax的培训。其培训主题涵盖Ajax、Struts、Hibernate、Spring、JavaServer Faces。
学习Dojo Toolkit时至少要清楚一点——你想要的是什么!在刚开始使用Dojo时,我的基本目标就是创建一个有用的JavaScript工具集而不必让专业的JavaScript开发者重复发明轮子。术语Ajax的出现掀起了一阵旋风,我们很快就发现自己创建的这个工具集被数以千计的开发者和上百万的用户所使用。
就像那些发展速度远远超出想象的项目和公司一样,痛苦始终是伴我们左右的。Dojo团队花费了将近18个月的时间来解决其快速发展所带来的问题:性能、范围、易用性及文档。从市场和文档的角度来看,开源项目的名声并不好,最开始Dojo也无法摆脱这个宿命。在发布了Dojo 09、10及11之后,我们对文档和API查看工具进行了极大的改进,现在我们可以自豪地说这些内容已经不会再给Dojo抹黑了。
除了源代码文档外,精彩的示例也是一本好书不可或缺的组成部分。在学习新东西时,最困难之处在于你不知道如何提出问题。Dojo是非常强大和高效的,但这也会导致一些Dojo新手无从下手。无论是狭义的Dojo还是广义的Ajax都会有一些学习曲线,你需要具有宽广的技术背景——从服务器端的编程语言到JavaScript、CSS、HTML及DOM都需要掌握,外加上浏览器之间的一些不兼容特性。类似于Dojo这样的工具集会尽最大努力帮助开发者摆脱这么多问题的困扰,但当开发者面对新问题时还是不可避免地会遇到很多麻烦。
Dojo开发者和用户可以采取很多方式去解决问题并加快脚步,可以阅读本书,也可以求助于社区,甚至还可以寻求SitePen这样的商业公司的帮助。
Dojo已经获得了成功并在茁壮成长,这是由其透明和开放的进程所决定的。所有代码都基于AFL和BSD协议,这两个协议的目的在于让广大用户能更好地使用而不是限制其使用。
很多个人与公司都对Dojo做出了巨大的贡献,如AOL、Google、IBM、Nexaweb、Renkoo、SitePen、Sun及WaveMaker等。我们有一个严格但低门槛的贡献政策(contribution policy),它要求所有贡献的源代码都要通过一个贡献协议协定(Contributor License Agreement),这样就能保证现在和将来对Dojo地使用不会导致法律或专利上的问题。
相对于其他工具集,我们进行了更多的创新和试验,在DojoX中引入的新特性已经遥遥领先于其他工具集。
我与James Harmon相识在一次会议上,那时他正在进行关于Dojo的讲座。James对Dojo深入浅出地介绍非常精彩。Alex Russell和我总是想面面俱到地将Dojo介绍给别人,而James却能将复杂的主题分解为易于理解的概念,这样人们就能快速掌握Dojo了。
本书同样以清晰明了的方式介绍了如何使用Dojo轻松创建Web应用和Web站点,即使开发者不是JavaScript专家也没有关系,凭借Dojo Toolkit,他们可以快速且高效地进行开发。Dylan Schiemann
CEO,SitePen
联合创始人,Dojo Toolkit
致谢
只把我的名字列在本书的封面上显得太不合时宜了。本书是集体智慧的结晶,我对为本书作出贡献的所有人表示深深地敬意。首先,感谢本书的编辑Debra Williams Cauley,他以其专业的知识指导我完成本书的编写,同时还给予我很多建议。
感谢Prentice-Hall的Debra团队,包括直接与我打交道的Chelsey Marti、Chrissy White及Michael Thurston,还有那些幕后工作者。Eric Foster-Johnson也为本书提出了很多有价值的建议。
要是没有Dojo Framework也不会有关于Dojo的书。感谢那些为该项目作出贡献和长久以来帮助过我的人们,包括Dylan Schiemann、Alex Russell、Karl Tiedt、Adam Peller、Becky Gibson、Sam Foster、Ben Lowery和James Burke,要感谢 的人太多了,恕我不能一一列举。
感谢我的伙伴们,他们给予我很多建议,包括:Ted Rafacz、Max Rahder、Steve Meshner、Bob Phifer和Will Provost。感谢我的技术偶像:Douglas Crockford、Jesse James Garret还有Ajaxiancom的那帮家伙,是他们让我着迷于Ajax和JavaScript。
特别要感谢我亲爱的妻子Sonia,为了能让我安心写书,她独自一人承担了很多。没有你就没有这本书。你的支持永远是我灵感的来源。我爱你。
关于作者
James E Harmon是芝加哥Object Training Group的校长和高级讲师。他是一名资深的开发者,主要在埃森哲(Accenture)和其他几个Web咨询公司开发大型的在线应用,现在专注于通过最新的技术和框架对Java开发者进行培训。
本书的Web站点为:http://wwwObjectTrainingGroupcom/dojobook。
James EHarmon:暂无简介
张龙:暂无简介
Dojo、ExtJS、DWR、YUI、GWT、Prototype、ZK……面对这么多的Ajax框架(或库),初学者难免不知所措,我们到底该学习哪个?我想说的是,首先学习JavaScript,因为不管哪个Ajax框架,其根基始终离不开JavaScript,只有将JavaScript掌握好了才可能走得更远,更快。那么,学习JavaScript哪些内容呢?面向对象、闭包、事件模型、DOM等都是我们必须掌握的,只有这样才不会被一个又一个新的Ajax框架所累,才能真正凌驾于框架之上达到灵活运用的目的。
我从2006年就已经开始使用Dojo,那时的版本为043(这也是Dojo的一个经典版本),当时关于Dojo的资料非常少,甚至连官方网站的帮助文档也不够完善,迫不得已,只有阅读Dojo的源代码。从Dojo 10开始,Dojo的核心已经发生了重大的变化并且与之前的版本不再兼容;但万变不离其宗,其架构、思想还是有相通之处的。本书讲述的Dojo版本为11,我相信只要读者掌握好了该版本,就可以轻松应对以后的版本升级了。
本书共分为三大部分,共十七章。其中第一部分提供了Dojo的初学者指南,帮助大家尽快走进Dojo的世界。第二部分重点介绍了Dojo Widget,这也是Dojo最重要的组成部分,期间以表格的形式给出了各Widget的用法示例及相关属性、方法与事件等,读者也可以将这部分内容当作参考手册,随用随查。第三部分深入讲解了Dojo的方方面面,从对象与类到测试与调试,通过这一部分的学习将极大提高读者应用Dojo和JavaScript的技能。
从接手本书的翻译到交付出版经过了4个多月的时间,在这期间我集中了所有精力完成这本专著的翻译,不敢懈怠。
感谢我的父母!感谢你们的培养和教育。感谢我的女友张明辉!在翻译此书的这段日子里,是你无微不至的关怀让我忘却了生活中的琐事,专心于译作。
不得不提的还有机械工业出版社华章分社的陈冀康先生,是你的不断鼓励与帮助,给了我完成此书翻译的信心和勇气,谢谢。
限于译者水平,书中难免有不妥之处,如读者在阅读本书的过程中发现了任何问题或是有任何建议,望与我联系。联系方式如下:
Email: zhanglong217@yahoocomcn
博客:http://blogcsdnnet/ricohzhanglong
译者序
序
第一部分Dojo教程
第1章理解Dojo:教程
11教程简介
111本教程的目标
112使用Dojo的目的
12一个标准的HTML数据输入表单
121First与Last Name
122用户名
123Email地址
124地址
125州
126城市
127邮政编码
128服务日期
129评论
13改进表单的计划
131在表单中引入Dojo
132增加客户端验证
133增加服务器端特性
134使用专门的Dojo widget
135处理表单
14获取并运行源代码
15教程步骤1——引入Dojo
151下载或是创建源文件
152引入DojoToolkit
153引入Dojo样式表
154回顾所有的代码变化
155运行新页面
第2章使用Dojo进行客户端验证
21验证表单字段
22教程步骤2——增加客户端验证
221验证First Name字段
222验证Last Name字段
223验证用户名字段
224验证Email地址字段
225验证地址字段
226验证城市字段
227验证邮编字段
第3章使用Dojo与服务器端
协同工作
31增加服务器端特性
32教程步骤3a——增加服务器端验证
321指定事件处理函数
322对服务器端进行调用
33教程步骤3b——从服务器端接收
数据
331为城市字段选择恰当的Widget
332获得州的值并将其发送到
服务器端
第4章使用Dojo Widget
41将Dojo widget增加到页面中
Dijit——Dojo Widget模块
42教程步骤4——使用Dojo Widget
421使用Dojo DateTextBox Widget
422使用Dojo富文本编辑器Widget
第5章使用Dojo处理表单
51使用Dojo处理表单
52教程步骤5——处理表单
521创建Dojo Form Widget
522对表单提交进行拦截
523检查表单中所有元素的合法性
524将表单提交到服务器端
第二部分Dojo Widget
第6章Dojo Widget简介
61Widget是什么
62Dojo Widget是什么
63构成Dojo Widget的组件
631Widget HTML
632Widget样式
633Widget的JavaScript组件
634Dojo Widget的继承
635Dojo Widget概览
636构建自己的Widget
第7章Dojo Form Widget
71标准的Form和Dojo Form Widget
dijitform_FormWidget类
72详解Dojo Form Widget
第8章Dojo Layout Widget
81理解页面布局
dijitlayout_LayoutWidget类
82Dojo Layout Widget简介
第9章其他专门的Dojo Widget
91什么是专门的widget
92Menu Widget
921dijitMenu
922dijitMenuItem
923dijitMenuSeparator
924dijitPopupMenuItem
第三部分Dojo详解
第10章Dojo是什么
101JavaScript和AJAX的历史
102Dojo的历史
103Dojo的目标
104Dojo简介
105Dojo解决了哪些问题
106谁应该使用Dojo
107协议
108竞争者和替代者
109Dojo的未来
第11章Dojo的技术描述
111Dojo下载包中有什么
112Dojo源代码的组织
1121顶层目录
1122深入Dojo目录
113Dojo模块和特性
1131命名约定和命名空间
1132DojoBase模块
1133Dojo核心模块
第12章对象与类
121对象探究
1211创建对象
1212封装
1213对象模板
1214JavaScript的原型
122使用Dojo处理对象
Dojo函数:dojodeclare
123定义类
1231父类和继承
1232dojodeclare的API
1233Dojo的其他函数
1234对象图和“”符号
第13章String与JSON
131文本字符串
1311Dojo函数:dojostringpad
1312dojostringpad使用示例
1313Dojo函数:dojostring
substitute
1314dojostringsubstitute使用
示例
132JSON
1321Dojo函数dojotoJson
1322dojotoJson使用示例
1323Dojo函数:dojofromJson
第14章事件与事件处理
141事件模型简介
1411什么是事件
1412额外的Dojo事件
142定义并指定事件处理器
1421使用dojoconnect指定事件
处理器
1422指定事件处理器示例
143将事件表示为对象
144在Dojo中使用面向方面的编程
第15章Ajax Remoting
151Remoting
152XMLHttpRequest回顾
153dojoxhrGet函数
参数详解
154dojoxhrPost
使用示例——错误处理
155处理表单
1551Dojo函数dojoformToObject
1552Dojo函数dojoobjectToQuery
1553Dojo函数dojoformToQuery
1554Dojo函数dojoformToJson
1555Dojo函数dojoqueryToObject
第16章处理DOM
161DOM抽丝剥茧
162Dojo查询
1621CSS选择器
1622在dojoquery中使用选择器
1623使用dojoquery找到的DOM
元素
163动画
1631理解动画
1632Dojo动画函数
1633标准的动画效果
第17章测试与调试
171测试
1711单元测试
1712DOH——Dojo单元测试框架
1713其他类型的测试
172日志
1721基本日志
1722高级日志
〖=A(〗1122345566788910101011111112121216171819202021212525262727273030303133373839454545464649535354545555565959606262656769727778787980108108108110123123123124124125125145145147147147149149150150151153153154154155157157158167171171171172173174175176177178178179179183183183184184186187188189190192192192194194195195196197200200201202203204207208208209210211212214214214215218219219219221222229229230230233234234235〖=〗