Foundation of Ajax

来源:百度文库 编辑:神马文学网 时间:2024/04/28 06:46:08

在Web开发领域,Ajax横空出世,它能提供高度交互的Web应用,与桌面应用所差无几,而且能够在所有当前Web浏览器上部署,而无需特殊的插件。Ajax建立在现有的一些Web技术基础之上,如JavaScript、HTML和CSS,可以与你喜欢的服务器端语言结合使用.《Ajax基础》解释了如何有效地结合这些技术,在已有的Web应用和将来开发的新应用中实现Ajax。与你一样,我们只是开发人员,而不是拓荒者,我们的任务是构建Web应用,让客户受益。随着Web的不断发展,客户越来越需要得到更有表现力、更漂亮的界面......
拥抱2006年最热门技术——Ajax
——张基清

《Ajax基础》中文版 出版社:人民邮电出版社第二书店独家提供样章试读:12
这本书最打动我的一点是…书中有那么多详细、深入的代码示例和讨论。不过,它并不是简单地罗列代码而已,而是清楚地说明了该怎么做,以及为什么这样做,这真的很棒。
— greg hughes - dot - net
总之... 这是一本学习Ajax的好书,可以让你为开发应用打好基础。
— Kishore, ajaxguru.blogspot.com
几年前,我们开始构建Web应用时,认识到我们发现了一个“宝贝”,这简直就是软件开发的“圣杯”。以前我们一直在开发胖客户应用,这种应用每次发布一个新版本时,总是需要一个冗长的安装过程......


AJAX框架介绍
Ajax框架介绍
到此为止,你可能已经注意到,使用Ajax编程时有很多麻烦事。如果你要支持多个浏览器(现在还有谁只支持一个浏览器呢?),无疑会遭遇不兼容问题。单看一个简单的动作,比如说创建XMLHttpRequest对象的一个实例,这需要先进行浏览器测试。一旦开始尝试使用Ajax技术,你很快就会注意到要反复地完成同样的一些任务。当然,你可以收集一些常用代码库,甚至创建自己的框架。不过,做这个工作之前,需要先了解一下现在已经有些什么了。
与所有优秀技术一样,Ajax已经催生出大量框架,有了这些框架,开发人员的日子好过多了。我们要强调一点,Ajax还很新,而且还在发展,框架领域也同样如此。几乎每天都有新来者,目前还看不出谁是最后的赢家。2003年6月之前,这方面的框架还不多,所以在以后的几个月可能还会有巨大变化。
有些框架基于客户端,有些基于服务器端;有些专门为特定语言设计,另外一些则与语言无关。其中绝大多数都有开源实现,但也有少数是专用的。我们不会面面俱到地谈到每一个框架,而且也不可能深入分析提到的每个框架。我们的出发点很明确,就是让你对现在有些什么有所认识。在你读到本附录时,我们提到的一些工具包可能已经销声匿迹,另外的则可能刚刚创建。哪个框架最适合你?对于这个问题,只有你自己有发言权;不过,在框架领域稳定之前,你可以持一种保守的态度。甚至还有人在着力将各种框架合并在一起,等这个工作结束时应该会有好戏看!当你读到本书时,情况应该会更加明朗,但也许你还想了解一下目前的情况 。
B.1 浏览器端框架
下面几节介绍了一些浏览器端框架。
B.1.1 Dojo
Dojo是最老的框架之一,于2004年9月开始开发。这个项目的目标是建立充分利用XHR的DHTML工具包,并把重心放在可用性问题上。Dojo只有几个文件,不用处理XHR的建立,只需调用bind方法,并传入想调用的URL和回调方法即可。就这么简单。还可以使用bind方法来提交整个表单。
Dojo有一个特性使它独树一帜,这就是它支持向后和向前按钮。尽管这个特性不一定在每个浏览器上都能用(遗憾的是,Safari就是一个异类),但你确实可以注册一个回调方法,在用户点击了向后按钮或向前按钮时触发这个方法。Dojo还提供了changeURL标记,力图解决使用Ajax所固有的书签问题。
Dojo看上去是相对成熟的工具包之一,它把重点放在可用性上,这一点很不错。Dojo表现得相当稳定,在它身后还有一些支撑力量。Dojo的邮件列表相当活跃,多看一些文档可能更有帮助。可以在dojotoolkit.org得到更多相关信息。
B.1.2 Rico
Rico是市场上最新的框架之一,由Sabre Airline Solutions开发,随后又成为开源实现。当然,rico在西班牙语里就是rich,说明这个项目的总目标是提供一组组件来开发丰富的因特网应用。它得到了广泛的浏览器支持,不过让人不解的是Safari 并不支持Rico。
与Dojo关注可用性不同,Rico则是针对拖放动作、数据网格和所谓的电影效果(移动部件、淡入淡出等等)而设计。Rico网站上有很多有意思的演示版(DEMO),并且提供了代码。如果开发人员想尽快了解Rico,并且运行起来,这是一个很好的起点。相关的文档不多,不过随着这个框架的日渐成熟,这种情况会有所改观。
Rico可以作为单个文件下载,不过你可能还需要Prototype JS库。更多有关的信息请访问openrico.org/home.page。
B.1.3 qooxdoo
qooxdoo也是Ajax框架领域的一个新成员,它提供了一个基于JavaScript的工具包来弥补HTML的不足。尽管还处在早期的alpha阶段,但qooxdoo确实提供了一些相当引人注目的部件。使用qooxdoo,可以模拟标准胖客户应用中的一些特性,如菜单条、工具提示、网格布局和拖放支持。
qooxdoo确实有一些有用的文档,还对底层细节提供了很有帮助的解释。qooxdoo的魅力显然体现在它的复杂部分上。如果你的目标是创建瘦应用,并希望它与胖客户应用相差无几,就可以试试qooxdoo。更多有关的信息请访问qooxdoo.oss.schlund.de。
B.1.4 TIBET
你觉得Ajax最早是什么时候出现的?根据对此的解释,也许会认为TIBET可能是现存最老的框架。根据文档所述,TIBET小组从1997年就开始开发这个工具包,他们的目标是提供企业级Ajax支持。TIBET看上去不只是包装了XMLHttpRequest对象,它还对Web服务和底层协议提供了支持,并且提供了Google、Amazon和许多其他常用服务的预置包装器。
真正让TIBET卓而不群的是,它有一个完全交互式的基于浏览器的IDE,这能大大简化开发、调试和单元测试。更多有关的信息请访问www.technicalpursuit.com。
B.1.5 Flash/JavaScript集成包
在Ajax之前,Flash很是风行,很多Web网站都建立在Flash平台上。那些曾对Flash狠下一番功夫的人不想完全放弃Flash,利用这个开源项目就能同时利用Ajax技术。这个工具包在所有主要浏览器上都能用,使得JavaScript能够调用ActionScript,ActionScript也能调用JavaScript。可以来回传递大量对象,包括日期、串和数组。
Flash/JavaScript集成包的安装涉及一些JavaScript文件,以及两个用于Flash的库函数。从页面上调用ActionScript函数只需几行代码而已。有关的文档相当少,不过,如果你想使用Ajax访问Flash,这个工具包就很值得研究。更多有关的信息请访问weblogs.macromedia.
com/flashjavascript/。
B.1.6 Google AJAXSLT
基于Google Maps的工作,Google AJAXSLT是使用XPath的XSL转换(XSLT)的JavaScript实现。XSLT可以把XML文档转换为其他语言,如HTML。AJAXSLT允许使用JavaScript在浏览器上直接完成这些转换。
Google AJAXSLT在所有主要浏览器上都能工作,它是在BSD许可证下发布的。这个工具包很小,包括几个JavaScript文件,还有一些方便的测试页。Google AJAXSLT不是十全十美的,不过,如果Google Suggest有所提示,我们希望Google AJAXSLT的缺点能很快解决。因为Google是最先使用Ajax的网站之一,我们会很有兴致地看到在未来几个月它还会有所增加。更多有关的信息请访问goog-ajaxslt.sourceforge.net。
B.1.7 libXmlRequest
libXmlRequest框架也是比较老的一个框架,早在2003年就已经发布了。这个框架包括一个JavaScript文件,它相当于XMLHttpRequest对象的一个包装器,提供了两个重载的请求函数:getXml和postXml。另外,它有一些处理缓冲池和缓存的属性,还有一些工具函数处理常见的任务,如解析来自服务器的XML以及修改DOM。
这个工具包能在哪些浏览器上运行,这一点还不是很清楚,而且有关的文档相当少。这个工具包版权归其作者Stephen W. Cote所有,其中没有提到许可问题。因此,只能用它帮助你产生灵感。更多有关的信息请访问www.whitefrost.com/index.jsp。
B.1.8 RSLite
RSLite是远程脚本的一个实现,由Brent Ashley编写。从技术上讲,它没有利用作为Ajax核心的XMLHttpRequest对象,但是得到了更广泛的浏览器支持。如果你需要支持原来的浏览器,而这些浏览器不支持XMLHttpRequest对象,就可以试试RSLite。RSLite是相当轻量级的,已从2000年发展至今 。更多有关的信息请访www.ashleyit.com/rs/rslite/。
B.1.9 SACK
SACK(简单Ajax代码包)开发为一个瘦包装器,包装了XMLHttpRequest对象。其作者Gregory Wild-Smith认为,其他的许多框架太过复杂,而且做了许多本不该它们完成的任务。所以他创建了SACK来简化Ajax的开发。SACK包括几个可以简化服务器调用的方法。比起具体创建适当的XMLHttpRequest对象实例来说,用更少的代码就能向服务器发送数据,并处理响应。
SACK由一个JavaScript文件组成,其中包含很少的代码。SACK底层软件的发布得到了修改X11许可(也称为MIT许可),与大多数开源项目一样,它的文档并不多,不过,入门肯定还是绰绰有余的。SACK的真正强大之处在于它的简单性,如果你要找的是一个基本包装器,可以试试SACK。更多有关的信息请访问twilightuniverse.com/projects/sack/。
B.1.10 sarrisa
sarissa有一点是Ajax做不到的,它以一种独立于浏览器的方式对XML API提供了包装支持。利用这个框架,创建和使用XMLHttpRequest对象实在是小菜一碟(不用检查浏览器,它已经为你处理好了)。另外,sarissa还对使用DOM提供了支持。类似于Google AJAXSLT,sarissa也支持XSLT,它模拟了IE上的Mozilla处理器。
sarissa只包括几个类,在GPL协议下发布。Mozilla/Firefox和IE都充分支持sarissa,只在Opera、Konqueror和Safari浏览器上有些函数不能用。更多有关的信息请访问sarissa.
sourceforge.net/doc/。
B.1.11 XHConn
XHConn类似于SACK,它相当于XMLHttpRequest对象的一个简单包装器。你不用直接使用XMLHttpRequest对象,只需首先启动一个XHConn实例,与使用XHR同样的方法加以处理。也就是说,无需浏览器检查,并提供了一种简单的方法来确定浏览器是否支持XHR(这对于需要妥善降级的网站尤其方便)。
XHConn在Safari、IE、Mozilla、Firefox和Opera上都能工作。类似于大多数Ajax框架,这是一个开源实现,在Creative Commons License协议下发布。XHConn是一个代码不多的文件,不过它确实做到了该做的事情——简化Ajax。更多有关的信息请访问xkr.us/
code/javascript/XHConn/。
B.2 服务器端框架
以下介绍服务器端的框架。
B.2.1 CPAINT
CPAINT(跨平台异步接口工具包)在服务器端实现Ajax,它向客户返回文本或DOM文档对象,以便用JavaScript处理。CPAINT在大多数主要浏览器上都能用,而且支持远程脚本,在GPL协议下发布。这个项目的文档相当完备,不过,CPAINT只支持PHP和ASP。更多有关的信息请访问sourceforge.net/projects/cpaint/。
B.2.2 Sajax
利用Sajax,可以直接从JavaScript调用服务器端代码。Sajax支持Perl、Python、Ruby和ASP等语言(不过奇怪的是,目前并不支持Java)。安装Sajax相当简单,只涉及针对特定服务器语言的简单的库。Sajax的开发社区极其活跃。已经确认的只有IE 6和Mozilla/Firefox提供Sajax支持,不过本书作者认为它在Safari上也能很好地使用。更多有关的信息请访问www.modernmethod.com/sajax。
B.2.3 JSON/JSON-RPC
JavaScript对象注解(JSON)是一种文本格式,与XML很相似,可以用于交换数据。JSON的设计要保证两方面,一方面便于人阅读,另一方面便于机器解析,它使用了C系列语言类似的约定。与JSON相关的还有JSON-RPC,这是一个远程过程调用(RPC)协议,类似于XML-RPC,但面向的是JSON语言。作为规约,JSON-RPC在许多语言中都有实现,包括Java、Ruby、Python和Perl。
由于JSON-RPC是规约,你需要知道哪个特定实现适用于你的环境,还要充分了解特定的实现。取决于具体的实现,有些实现的文档相当完备,有些则根本没有。开发人员的参与程度也有很大不同。关于JSON-RPC规约的讨论已经有些少了。更多有关的信息请访问 www.crockford.com/JSON/index.html。
B.2.4 Direct Web Remoting
利用Direct Web Remoting (DWR),你能从JavaScript直接调用Java方法,就好像它们是浏览器的本地方法一样。尽管后台严格限制为Java,但DWR仍然是最流行的框架之一。DWR的文档是最棒的,还有一些有用的例子可以帮助你入门。
安装并不难,不过还要编辑Web应用的部署描述文件,另外要编辑DWR特定的文件。DWR配置文件指定了可以远程创建和调用的类,而且文档中警告用户:从浏览器调用服务器确实存在一些安全问题。除了包含服务器端代码的JAR文件,另外还有两个JavaScript文件包含了一些辅助函数。DWR适用于一些常见的Web框架,如Struts和Tapestry,在Apache协议下发布。如果想从Web页面调用Java方法,DWR能助你一臂之力。更多有关的信息请访问getahead.ltd.uk/dwr/index。
B.2.5 SWATO
Shift Web Applications TO (SWATO)也是一个基于Java的Ajax框架解决方案。SWATO在所有Servlet 2.3或更高版本的容器中都能工作,类似于DWR,它也需要对配置文件做一些更新。有意思的是,SWATO充分利用了JSON来完成客户和服务器之间数据的编组,与本附录中讨论的其他一些框架相似,它也允许从浏览器调用服务器端Java。为了帮助开发人员,SWATO包括许多可复用的组件,如自动完成文本框等。
与使用其他框架相比,使用SWATO要相对复杂一些,要访问的类需要实现一个SWATO接口。不过,其文档相当完备,对于入门来讲绰绰有余。SWATO设计为使用Spring来打包服务,但是不一定非得如此。更多有关的信息请访问https://swato.dev.java.net/doc/html/。
B.2.6 Java BluePrints
Sun的BluePrints小组一直忙于将Ajax纳入他们的解决方案目录(Solutions Catalog)中。Solutions Catalog包括一些很好的文档,描述了如何使用基本Ajax,如何实现自动完成,如何创建一个进度条以及如何验证表单。它还包括JavaServer Faces组件。为BluePrints Solutions Catalog开发的代码可以从www.java.net网站得到。
B.2.7 Ajax.Net
Ajax.Net之于Microsoft .NET就相当于SAJAX、DWR和SWATO之于Java。利用Ajax.Net,你能从JavaScript客户调用.NET方法。Ajax.Net包括一个DLL,可以与VB .NET或C#一同使用。Ajax.Net的文档很好地展示了针对各种场景的解决方案,而且能得到相关的源代码。不过,Ajax.Net的许可协议很不明确。更多有关的信息请访问ajax.net。
B.2.8 Microsoft的Atlas项目
Microsoft在Ajax领域涉足的时间已经不短了,毕竟,XMLHttpRequest对象是Microsoft发明的,而且从1998年开始就已经用在Web版本的Outlook中。Microsoft把重点放在提供一个更加健壮的开发环境上,从而让开发人员的工作更轻松。Microsoft的着眼点还不只这些,还力图提供客户端脚本框架、ASP.NET控件和Web服务集成。Microsoft还发布了Atlas项目,作为其ASP.NET 2.0预览版的一部分。有Microsoft的介入,开发人员的工具包可能会比今天充实得多。更多有关的信息请访问beta.asp.net/default.aspx?tabindex=7&t-
abid=47。
B.2.9 Ruby on Rails
Rails是一个令人兴奋的新Web框架,建立在Ruby语言基础上。如今,Rails已经得到了大量关注(在Google上查一下Rails,可以找到更多信息),这是因为使用Rails能够快速开发基于Web的应用。开发Basecamp时,37signals小组提出名为Rails的框架。Basecamp正是Ajax应用的主要示例,所以看到Rails对Ajax提供如此充分的支持,我们不应感到奇怪。Rails有许多内置的JavaScript库,其中包装了很多常用的特性,它还包含一个模块,其中包装了Ruby的JavaScript调用。如果你在使用Rails,就会发现Ajax非常简单。更多有关的信息请访问www.rubyonrails.org。


Ajax基础
在Web开发领域,Ajax横空出世,它能提供高度交互的Web应用,与桌面应用所差无几,而且能够在所有当前Web浏览器上部署,而无需特殊的插件。Ajax建立在现有的一些Web技术基础之上,如JavaScript、HTML和CSS,可以与你喜欢的服务器端语言结合使用。《Ajax基础》解释了如何有效地结合这些技术,在已有的Web应用和将来开发的新应用中实现Ajax。与你一样,我们只是开发人员,而不是拓荒者,我们的任务是构建Web应用,让客户受益。随着Web的不断发展,客户越来越需要得到更有表现力、更漂亮的界面。
早期有关Ajax的宣传都围绕着它在一些Internet大户中的使用,如Google和Amazon。不过,尽管一些主要的软件开发公司已经走在前面,率先尝试了Ajax,但这并不意味着你的应用也同样能从这个技术中获益。你已经知道如何开发Web应用,所以这不是我们要介绍的内容,这本书只是使用一些重点突出的具体例子介绍Ajax工具和技术,它们能为你的应用赋予新的生命。利用这本书,再加上已有的开发经验,你也能在应用中使用Ajax技术,让最终用户有更丰富的体验。
我们第一次发现Ajax的潜力时,就知道需要在我们自己的应用中充分利用这个技术。经过一段时间的摸爬滚打,我们学到了一些难得的经验,我们认为这些知识有必要与开发群体共享。通过学习这本书,你能很容易地扩展你的应用来使用Ajax,而且这一过程将乐趣无穷。我们衷心地希望,有一天能看到你开发的基于Ajax的一流应用!


译者序

这几个界面是不是很棒?也许你还不以为然,作为胖客户应用,这些只是雕虫小技而已。不过要知道,你看到的可不是胖客户应用,它们完全是Web应用!
也许你又会说,是Web应用又怎么样?你一样可以做得。不错,不是有这么一句话吗? “只要功夫深,铁杵也能磨成针”。只要你肯想办法,没有做不到的。但是,可以告诉你,这些应用并没有让开发人员费“牛劲”。
是什么“高级技术”让开发人员如虎添翼?又是什么“宝贝”使用户欣喜万分?
这就是Ajax!
Ajax并不是一个高深的技术,如果说是宝贝,也只是算是“老宝贝”!曾经有人这样评价Ajax:“新瓶装老酒”。但这并不妨碍人们对它趋之若骛。而且这瓶老酒经过时间的积淀和环境的变化,已经更加醇香,再加上美观实用的新包装,所以不难解释Ajax的人气这么旺。
实际上我们从界面上看到的只是一部分,Ajax带给我们的远不只是这些。你可以到Google Maps、Google Suggest和Gmail上亲身体验一下,拿事实说话才掷地有声。
你是不是有这样一些问题:
Ajax是什么?新名词?杂烩汤?还是…
用Ajax到底能做什么?做个漂亮界面?改善用户体验?还有…
怎么实现Ajax?XMLHttpRequest对象是什么?怎么避免页面完全刷新?…
Ajax最适用哪些情况?完成验证?建立自动刷新页面?还有…
Ajax有没有帮手?可以用哪些工具和技术简化Ajax开发?
能对Ajax开发应用TDD吗?怎么做呢?
JavaScript也能轻松地调试吗?有哪些调试工具?这些工具好用吗?
有没有Ajax框架?Ajax框架对Ajax开发有多大的作用?
想知道这些问题的答案吗?想轻轻松松地迈进Ajax殿堂吗?想让你的老板、你的用户对你刮目相看吗?请仔细阅读这本书:《Ajax基础》!




引言
几年前,我们开始构建Web应用时,认识到我们发现了一个“宝贝”,这简直就是软件开发的“圣杯”。以前我们一直在开发胖客户应用,这种应用每次发布一个新版本时,总是需要一个冗长的安装过程。我们的应用要部署到分散在全国各地的数百个用户,让我们沮丧的是,这个复杂的安装过程很容易出错,不仅让开发人员很头疼,用户也非常不满。
能通过浏览器来部署应用,这看上去相当不错,因为这样一来,就不再需要在客户计算机上安装软件了。所以,与许多其他组织一样,我们公司也很快转型,开始在Web上部署应用。
尽管部署起来相当容易,但Web应用也有自己的问题。在用户看来,最突出的问题是用户界面没有了以往丰富的交互性。Web应用仅限于使用HTML提供的一组基本部件,而这是很有限的。更糟糕的是,与服务器交互需要完全刷新页面,很多用户已经熟悉了功能强大的客户-服务器应用,对他们来说,这一点很让人不快。
我们以前一直认为,Web应用中只要刷新页面就必须完全刷新,好像这是在所难免的,所以往往想方设法地避免页面刷新;我们甚至还考虑过编写一个Java applet,由它处理浏览器和服务器之间的通信。不过,随着越来越多Web应用的部署,我们很快发现,用户已经习惯了这种完全页面刷新,这么一来,我们也不再那么强烈地想要另辟蹊径了。
转眼过去了5年。如今开始使用XMLHttpRequest对象在浏览器和服务器之间完成异步通信,其实甚至在造出Ajax这个词之前,这种方法就已经有了,归功于Google Suggest和Gmail等应用的出现,这种方法在开发群体中产生了很大反响。早在多年以前,Internet Explorer中就已经使用了XMLHttpRequest对象,但是如今它还得到了其他浏览器的支持,这是一个重大突破。我们在一个已开发的应用中增加了Ajax功能(这个应用不是精心挑选的,只是当时碰巧在开发这个应用),结果令我们震憾不已,所以我们都有一种想法“嘿,要是有人写一本有关Ajax的书就好了”。因此,这本书应运而生。


本书概述
为什么写《Ajax基础》这本书?就是为了介绍你可能需要的所有工具,要在现有的或者将来的应用中增加Ajax,这些工具是非常有用的。在写这本书时,我们有一个座右铭:“你需要知道的我们都会介绍,不需要你知道的我们绝口不提” 。我们认为,作为这本书的读者,你应该已经是一个有经验的Web应用开发人员。正因如此,我们会把重点放在你很可能不了解的新内容上:Ajax及相关的工具和技术。我们不会花大量篇幅来谈服务器端语言,因为我们认为你会使用自己选择的工具集来开发服务器端功能,在这方面你不需要我们的帮助。另外我们也不会浪费时间来讲如何构建企业规模的应用,这样的应用很少使用Ajax。相反,重申一次,我们的重点只是Ajax以及相关的工具和技术。
这本书中的例子特意做得很小,而且很紧凑。它们会尽可能简洁地展示一个或两个重要的Ajax概念。我们认为,作为一个有经验的Web开发人员,你应该能熟练地把我们展示的内容推广到你自己的环境中;因此,我们不会在例子中“堆放”对你没有多大用处的信息。
第1章讨论了Web应用开发的发展历程,从过去,谈到现在,并且预见了将来。如果你了解了开发技术过去是什么样子,就能更容易地认识到它们将来会有怎样的发展。
第2章介绍了XMLHttpRequest对象。这个Ajax概念你可能不太熟悉,所以我们专门用一章来解释XMLHttpRequest对象的属性和方法。如果你像我们一样,很可能最近才注意到XMLHttpRequest对象,不过,要知道早在几年前Internet Explorer中就已经有了XMLHttpRequest对象。因此,我们会用充分的笔墨讨论XMLHttpRequest对象,并说明它能做什么。
第3章开始谈到Ajax的具体内容。这一章将讨论XMLHttpRequest对象可以采用不同方法与服务器通信。我们讨论了可以使用XML、纯文本甚至JavaScript Object Notation (JSON)作为传输介质,并介绍了可以采用哪些方式与XMLHttpRequest对象结合使用。在这一章的最后,你就能熟练地使用XMLHttpRequest对象与服务器端通信,而不必让用户看到页面完全刷新。
作为开发人员,我们总是要花很多时间学习如何使用一种新技术,但并不知道怎么实际应用。第4章将解决这个问题,在此会展示一系列可以使用Ajax技术的场景。如前所述,每个例子都很小,很紧凑,这样你能更好地理解相应内容,而不用在大堆不必要的信息中搜寻。
第5、6和7章对于Ajax新手来说尤其重要。我们不希望你仓促上阵,先要配备合适的工具和技术,再考虑在应用中增加Ajax。利用第5章介绍的工具和技术,可以简化Web应用的开发。这些工具和技术可以帮助你得到质量更高、遵循行业标准而且将来更易于维护的代码。
测试驱动开发(Test-driven development,TDD)使我们开发应用的方法发生了根本改变。在编写代码之前先编写单元测试,这样就能确保你写的代码会正常工作,并能大大提高代码的质量。利用一个单元测试集,可以确保做出修改后所有代码还能按预期的那样工作,从而使得将来的修改更为容易。Ajax同样不能避开TDD,而且TDD的好处再强调也不为过,所以我们专门用一章来讨论。由于Ajax主要是一个基于浏览器的技术,第6章将展示如何对你的JavaScript代码应用TDD。
谈到JavaScript,如果你想使用Ajax,就必须至少写过一些JavaScript。许多开发人员都不喜欢JavaScript,说它缺少一些重要的生产性工具,如调试工具,所以没有多大的用处。如今这种说法已经不成立了。第7章讨论了一些调试工具和技术,如果出现问题,可以用这些工具和技术来跟踪,并且尽快、尽可能容易地加以解决。你不用再担心使用JavaScript时出现问题而不能诊断,也不用因此对JavaScript退避三舍。
Ajax是一个发展很迅猛的技术,在写这本书期间,Ajax已经得到了飞速的发展。第8章把所有的内容综合在一起,讨论了新兴的Ajax开发模式和框架,并提供了一些在线资源。另外,第8章还给出了一个完整的例子,不仅显示了一些高级Ajax技术,还展示了使用现成的Ajax框架来完成Ajax开发是何等容易。通过使用框架,你不用再做Ajax开发平常的一些烦琐任务,这样就能把重点集中在业务逻辑上,而不是Ajax的细节上。
最后,附录A描述了不同浏览器上W3C DOM和JavaScript实现中存在的一些特异之处和不一致的地方,并提供了一些方法来克服这些问题。附录B对最流行的Ajax框架和库做了一个总结,这些框架和库有助于Ajax技术的推广。随着Ajax越来越流行,框架也肯定会越来越多,所以让我们拭目以待新的框架和其他开发工具的出现吧。


作者简介
■RYAN ASLESON 是一位软件开发人员,他工作并且居住在明尼苏达州的双城地区。从1998年以来,Ryan就一直在从事Web应用的构建,对JavaScript和Web开发工具有着丰富的经验。他成功地帮助所在组织完成了转型,从基于servlet的内容创建转向了JSP,另外还维护着建立在Java企业版基础上的一个公司Web应用框架。他还是Taconite框架(taconite.sf.net)的缔造者之一,这个框架大大简化了Ajax的开发。Ryan还对性能调优和基于标准的开发卓有兴趣。如果不工作,Ryan喜欢与他的家人在一起,还热衷于户外活动,如钓鱼、打猎和水上运动等等。
■NATHANIEL T. SCHUTTA 是一位高级软件工程师,生活在明尼苏达州的双城地区,在开发基于Java企业版的Web应用方面经验相当丰富。他拥有明尼苏达州大学软件工程理学硕士学位,最近几年特别关注用户界面设计。Nathaniel对公司界面原则的建立做出了很大贡献,而且参与过许多Web应用的开发。他很早以前就是Computing Machinery协会人机交互特殊兴趣小组的成员,而且是一位Sun认证Web组件开发人员。Nathaniel认为,如果用户不明白你的应用,那肯定是你哪里做错了。除了在用户界面领域的工作外,Nathaniel还是开源Taconite框架的合作者之一,曾参与过两个企业Java框架的工作,开发过培训资源,并指导过多个研究小组。如果天气暖和,他会在家乡明尼苏达州短暂休息,只要他的妻子没有怨言,总会在高尔夫球场上看到他的身影。他目前主要研究Ruby、Rails和(最近才转向)Mac OS X。他的想法总是天马行空,如果想更多地了解,请访问他的blog :www.ntschutta.com/jat/。


技术审校人员
■KEITH HARVEY 是SCOPE iT (www.scopeit.com)的CTO和首席建构师,主要致力研究基于Web的项目预算应用,即快速、准确地开发IT项目的评估、预算和规划。SCOPE iT是Microsoft的一个合作伙伴,拥有ISV/软件解决方案资格。SCOPE iT应用建立在最新的Microsoft .NET技术、SQL Server和Ajax基础上。
Keith本身也是一位作者,写过许多关于Microsoft技术、数据库、Ajax、软件项目评估等方面的文章。Keith与他的妻子Tricia和女儿Hanna居住在加州西部。他的个人网站是www.keith-harvey.com。


后记
本书源代码
这本书中的所有例子都可以从Apress网站的源代码(Source Code)部分免费得到。把浏览器指向www.apress.com,点击Source Code链接,在列表中找到Foundations of Ajax。也可以从本书主页下载源代码(ZIP文件)。源代码按章组织。
本书的更新信息
尽管我们尽了最大努力,但是你可能还会在书中偶尔发现一两个错误,当然我们希望不会这样!如果正文或者源代码中还有错误,对此我们表示歉意。可以从Apress网站(www.apress.com)的本书主页上得到最新的勘误表,在此还会提供我们的联系信息,如果你发现了错误,可以通知我们。
联系我们
如果你对本书内容和源代码例子有疑问和建议,我们会非常重视。请把所有问题和建议直接发给foundationsofajax@gmail.com。我们会尽快回复;不过要记住,我们(像你一样!)不可能马上就有回应。
我们希望你认为这是一个有价值的资源,能像我们写这本书一样兴趣盎然地阅读这本书。
此致
Ryan Asleson和Nathaniel T. Schutta


本书目录
第1章 Ajax简介
1.1 Web应用的发展简史
1.2 浏览器历史
1.3 Web应用的发展历程
1.3.1 CGI
1.3.2 Applet
1.3.3 JavaScript
1.3.4 Servlet、ASP和PHP . . .哦,太多了!
1.3.5 Flash
1.3.6 DHTML革命
1.3.7 XML衍生语言
1.3.8 基本问题
1.3.9 Ajax
1.4 可用性问题
1.5 相关技术
1.6 用法
1.7 设计考虑
1.8 小结
第2章 使用XMLHttpRequest对象
2.1 XMLHttpRequest对象概述
2.2 方法和属性
2.3 一个交互示例
2.4 GET vs. POST
2.5 远程脚本
2.5.1 远程脚本概述
2.5.2 远程脚本的一个例子
2.6 如何发送简单的请求
2.6.1 一个简单的请求例子
2.6.2 关于安全
2.7 DOM Level 3 加载和保存规范
2.8 DOM
2.9 小结
第3章 与服务器通信;发送请求和处理响应
3.1 处理服务器响应
3.1.1 使用innerHTML属性创建动态内容
3.1.2 将响应解析为XML
3.1.3 使用W3C DOM动态编辑页面内容
3.2 发送请求参数
3.2.1 请求参数作为XML发送
3.2.2 使用JSON将数据发送至服务器
3.3 小结
第4章 实现基本Ajax技术
4.1 完成验证
4.2 读取响应首部
4.3 动态加载列表框
4.4 创建自动刷新(Autorefreshing)页面
4.5 显示进度条
4.6 创建工具提示
4.7 动态更新Web页面
4.8 访问Web服务
4.9 提供自动完成(Autocomplete)
4.10 小结
第5章 构建完备的Ajax开发工具箱
5.1 使用JSDoc建立JavaScript代码的文档
5.1.1 安装
5.1.2 用法
5.2 使用Firefox扩展验证HTML内容
5.2.1 HTML Validator
5.2.2 Checky
5.3 使用DOM Inspector搜索节点
5.4 使用JSLint完成JavaScript语法检查
5.5 完成JavaScript压缩和模糊处理
5.6 使用Firefox的Web开发扩展包
5.7 实现高级JavaScript技术
5.7.1 通过prototype属性建立面向对象的JavaScript
5.7.2 私有属性和使用JavaScript的信息隐藏
5.7.3 JavaScript中基于类的继承
5.7.4 汇合
5.8 小结
第6章 使用JsUnit测试JavaScript
6.1 JavaScript提出的问题
6.1.1 测试先行方法介绍
6.1.2 JUnit介绍
6.2 分析JsUnit
6.2.1 起步
6.2.2 编写测试
6.2.3 运行测试
6.2.4 使用标准和定制查询串
6.2.5 使用JsUnit服务器
6.2.6 获得帮助
6.2.7 还能用什么?
6.3 小结
第7章 分析JavaScript调试工具和技术
7.1 用Greasemonkey调试Ajax请求
7.1.1 Greasemonkey介绍
7.1.2 使用Greasemonkey XMLHttpRequest调试用户脚本
7.1.3 使用XMLHttpRequest调试用户脚本检查Ajax请求和响应
7.2 调试JavaScript
7.2.1 使用Firefox JavaScript Console
7.2.2 使用Microsoft Script Debugger
7.2.3 使用Venkman
7.3 小结
第8章 万事俱备
8.1 模式介绍
8.1.1 实现褪色技术(FAT)
8.1.2 实现自动刷新
8.1.3 实现部分页面绘制
8.1.4 实现可拖放DOM
8.2 避免常见的陷阱
8.3 相关的更多资源
8.4 使用框架
8.5 Taconite介绍
8.5.1 Taconite原理
8.5.2 解决方案
8.5.3 Taconite怎么处理内容?
8.6 Dashboard应用介绍
8.7 用Taconite构建Ajax Dashboard
8.7.1 一般特性介绍
8.7.2 设计特性介绍
8.7.3 分析代码
8.7.4 分析天气预报组件
8.7.5 分析标题新闻组件
8.7.6 如何完成自动重新刷新工作?
8.7.7 建立一个更好的Autocomplete
8.8 小结
附录A 开发跨浏览器JavaScript
A.1 向表中追加行
A.2 通过JavaScript设置元素的样式
A.3 设置元素的类属性
A.4 创建输入元素
A.5 为输入元素增加事件处理程序
A.6 创建单选钮
A.7 小结
附录B Ajax框架介绍
B.1 浏览器端框架
B.1.1 Dojo
B.1.2 Rico
B.1.3 qooxdoo
B.1.4 TIBET
B.1.5 Flash/JavaScript Integration Kit
B.1.6 Google AJAXSLT
B.1.7 libXmlRequest
B.1.8 RSLite
B.1.9 SACK
B.1.10 sarrisa
B.1.11 XHConn
B.2 服务器端框架
B.2.1 CPAINT
B.2.2 Sajax
B.2.3 JSON/JSON-RPC
B.2.4 Direct Web Remoting
B.2.5 SWATO
B.2.6 Java BluePrints
B.2.7 Ajax.Net
B.2.8 Microsoft的Project Atlas
B.2.9 Ruby on Rails


北京百联美达美数码科技公司 版权所有 京ICP证020026号
Copyright©http://www.dearbook.com.cn/, Inc. All Rights Reserved.
_xyz