作译者介绍
作者:Dave Crane Eric Pascarello
译者:李锟(网名dlee)及ajaxcn.org的成员们。
Dave Crane:英国资深Web开发人员,在智能家居、银行和金融系统领域应用DHTML和Ajax等客户端技术拥有丰富的经验。
Eric Pascarello 资深ASP.NET开发人员,著名Java社区JavaRanch的 HTML与JavaScript版主。
Darren James 是开源Ajax框架的架构师。
李锟(网名dlee):独立软件咨询顾问,有多年软件开发和软件项目管理的经验,在J2EE、Ajax、敏捷软件开发方法等领域有独到的见解。
内容提要
本书是目前Ajax领域最为全面深入的一本著作,其中不仅有对于基础知识的介绍,还有对于Ajax开发中重大的体系架构问题的深入探讨,总结了大量 Ajax开发中的设计模式,并讨论了框架、安全性与性能等等。书中提供了几个典型的例子,兼顾各种开发平台,这些例子的代码稍作修改就可以直接应用于项目开发之中,代码源文件可以从图灵网站下载。
本书内容广泛且深入,同时适用于各个层次的Web应用开发人员。
前言
有时候,在你发觉之前,命运之神已经降临多时了。20世纪90年代初期,在我使用的各种有趣的新技术之中,一种称为JavaScript的小脚本语言刚刚崭露头角。我很快意识到,尽管名字叫JavaScript,它其实与我心爱的Java没有任何关系,但是从此它却与我结下了不解之缘。
90年代后期,我开始为数字机顶盒技术的早期采用者开发软件。其中主要软件部分的用户界面完全使用JavaScript编写,我成为一个开发小组的技术负责人,负责使用这种语言编写窗口管理代码、调度程序和各种巧妙代码。“多么神奇啊!”我想,“它总是让人意想不到。”
此后,我转向了要求更高的工作——为会说话的未来智能家居开发企业消息中枢(backbone)和各种用户界面组件。我是靠Java方面的技能被录用的,但是很快我又在编写奇妙的JavaScript用户界面了。令人惊奇地是,我发现一些人居然郑重其事地在用这种脚本语言来编写框架。很快,我使用了 Mike Foster开发的早期版本的x库(你将在本书偶尔看到它的身影)。一天下午,在开发一个邮件和文本信息论坛时,我有了一个不可思议、令人兴奋的想法:在隐藏帧(hidden frame)中检查新的消息,无需刷新屏幕就可以将消息添加到用户界面中。经过几个小时的狂热编码,我成功了,甚至解决了如何用颜色来呈现新的消息,使得它们容易被用户注意到。“多有趣啊!”我想,随后就又回去编写那些正经代码了。我还不知道,在同一时间,Eric Costello、Erik Hatcher、Brent Ashley和其他人正在考虑相同的事情,而微软也正在为其Outlook Web Aclearcase/" target="_blank" >ccess设计XMLHttpRequest。
命运之神还在紧随着我的脚步。我的下一个工作可以说是责任重大——为顶级的大型银行开发软件。我们混合使用了Java和JavaScript,并且使用了隐藏帧和其他的技巧。我的团队现在维护着超过1.5M字节的代码——除了使用由JSP生成的代码外,全部是静态的JavaScript。其中还没有算上图片资源。我们用它来开发上百个操作员使用的一个应用,这个应用管理着价值数以百万美元的帐户。你的银行帐户有可能就是使用这个软件来管理的。
在此期间,我没有完全意识到,JavaScript已经长大成人了。在2005年2月,Jesse James Garrett提供了完整拼图中缺失的一块——他为我们过去几年偷偷摸摸地私自使用的“跨浏览器异步富客户端动态HTML客户服务器技术”(cross- browser-asynchronous-rich-client-dynamic-HTML-client-server technology)取了一个简洁而干脆的名字:Ajax。
正如他们所说的,以后的一切已经载入史册。Ajax现在正在引起广泛兴趣。Prototype、Rico、Dojo、qooxdoo、Sarissa和许多其他框架的开发者正在编写大量优秀的代码。框架已经多得不可胜数,但是我们还是决定尝试一下。在附录C中,我们列举了大多数值得关注的框架。生活如此美好,我从来没有像现在这样享受计算机工作。
我们远未大功告成,这个领域还在发展之中。当我在2005年9月对5月撰写的第一章进行最后修改时,我吃惊地看到这个领域取得的巨大进展。这个主题仍然有很多值得思考的地方,接下来两年将会令人无比兴奋。在写作本书的旅程中,我非常幸运地有Eric和Darren一路相伴。
我希望你也会与我们同行——而且感到不虚此行!
Dava Crane
译者序
普遍来说,中国人缺乏匠人的气质。“匠人”这个词在中国几乎是一个贬义词。例如说:“xx不过只是一个匠人”。但是其实国内的软件行业正是缺乏一大批对于自己的工作精益求精的软件工匠,这才是国内软件行业的主要问题所在。
相比之下,日本人是一个非常有匠人气质的民族。手艺精湛的匠人自古以来在日本都受到普遍的尊重。在这个方面,我们需要向日本人学习的地方有很多。
自从Pete McBreen所著的Software Craftsmanship(中文版名为《软件工艺》,人民邮电出版社出版)出版后,“软件工艺”为软件行业的从业者带来了“软件工程”之外的另一个重要的隐喻。在此之前,“软件工程” 这个隐喻在软件行业中一直占据着绝对的话语权。软件工艺并非是为了彻底颠覆软件工程,而是为了促使大家将目光更多地投向精研软件建造过程中的工艺问题。这本书将软件开发者分成了三个层次:学徒开发者(Apprentice Developer)、技师开发者(Journeymen Developer)和软件工匠(Craftsman)。
Ajax in Action的作者无疑已经达到了软件工匠的层次,本书充分体现出了他们的技术水平。我将本书评价为大匠的杰作。时间将可以证明,本书在Ajax技术著作的殿堂中,会像米开朗基罗的大卫那样成为不朽之作。这本书就像大卫那样充满了美感,其架构的复杂、计算的精确令人敬畏,堪称是工艺学和艺术的完美结合。
想要开山立派,必须高屋建瓴。达摩祖师、张三丰无不是这样的人物。本书作为Ajax技术领域的开山之作,同样也达到了这样的高度。虽然它是Ajax领域的第一本著作,但是它所达到的高度至今仍然是同类著作难以企及的。
某个技术领域的第一本著作往往并不是该领域中最好的著作,例如,大量的开发实践已经证明早年那些介绍J2EE开发的书价值是有限的,直到Rod Johnson写出了经典的J2EE without EJB,对于EJB的盲目推崇才宣告结束。到目前为止,与Ajax技术相关的著作在国外已经出版了10本以上,国内也在今年开始陆续出版大量相关的著作,包括翻译和原创。然而,我们非常惊讶地发现,本书目前仍然是这个领域最为全面和深入的一本书。其中不仅包含了耐心细致介绍的基础知识以及精心设计的实战例子,更重要的是,还涵盖了对Ajax开发中重大的体系架构问题的深入探讨,并且总结出了大量Ajax开发设计模式,因此,认为本书是一本讲体系架构和设计模式的书是毫不过分的。
Ajax领域的新框架和组件库层出不穷,一些功能非常简单,一些则是过度的设计或者存在着严重的设计问题。Ajax开发者对于应该选择什么样的框架感到茫然无助,毫无疑问,Ajax in Action可以帮助你。本书是目前已经出版的唯一一本深入探讨Ajax开发中的架构问题的著作,这使得它显得卓而不群。如果不去深入研究Ajax开发中的架构问题,Ajax开发领域将会再现J2EE开发领域早年的那种混乱局面,本书将会使得Ajax开发秩序井然。我们需要的不完全是技术本身,还需要思考和选择的眼光。Ajax in Action正是能够带给读者选择的眼光的著作。它使读者能够全方位地理解Ajax开发,不仅仅是看到众多的树木,更重要地是看到整片的森林。架构设计的合理性和灵活性将是选择Ajax框架的一个首要因素,将能决定任何Ajax框架未来的命运。一年之后,存在架构设计问题的很多框架都将会退出历史舞台。
尽管如此,作者并不是只讨论重大的架构问题,而忽略了具体的实现细节,这样往往会流于空泛。作者不仅仅是卓越的评论家,更是卓越的实干家。对于书中介绍的每一个架构和模式都给出了精心设计的例子。对于Ajax开发需要的所有基础知识,作者都通过例子做了耐心细致的讲解。书中花费了一半的篇幅阐述了大量 Ajax开发的实例,展示了Ajax开发的方方面面。每一个实例中的代码最后都被重构为一个可以重用的组件,这些组件的不需要做任何修改,或者只需要稍作修改就可以直接应用在读者的项目开发之中,帮助用户得到更好的交互体验。
在本书中,有令人高山仰止的体系架构和设计模式的分析,有潺潺流水式的深入细致的实例讲解。娓娓道来,带给读者100%一对一的阅读体验,虽然讨论的内容很多,但是达到了形散神不散的效果,这个神就是改善Web应用的可用性,可以说,本书中所有关注的问题都是与改善Web应用的可用性相关的。这正是 Ajax技术诞生的使命,也应该是任何一个Ajax开发者需要牢记的。Ajax开发并不是一个纯粹的技术问题,因为这里还涉及到另一个重要的利益相关人,就是最终用户。我们始终要把最终用户的感受放在首要位置,才能开发出出色的Ajax应用。
这本书因为其内容的广泛和深入,同时适合于Ajax开发的初学者和提高者,两种类型的开发者都能从中得到巨大的收获。对于Ajax开发者来说,本书可以作为案头常备的著作。作者就像是一位吹着笛子的魔法师,循序渐进、深入浅出地将读者领进了Ajax这个迷人的殿堂。本书堪称是一片富饶的宝藏,等待着你—— 勇敢的探险家去探索和发现。
李锟
2006年4月4日于上海
试读感受
cleverpig第一手拿到了《ajax实战》试读版本,在阅读部分章节后为翻译者的无私努力感到敬畏和佩服。由于该书原文作者都属于“第一线实战家”,并非像侯捷那样有泼墨如雪的文学功底,所以原文中多处使用俚语——cleverpig在阅读原文电子版时就感受颇多。
而观《ajax实战》后,感觉文章虽然不能到行云流水的地步,但也字句通畅、文切意达。从章节的划分开,前几章为ajax初学者的向导,但是其中渗透了“模式化设计”的思路颇深;中间部分为核心技术说明,后面几章为目前流行技术探讨。
篇幅详略得当,适合初学者和ajax技术一线开发者。