Adding Ajax中文版
基本信息
编辑推荐
将Ajax加入现有网站系统全新Web 2.0视角,完美RIA体验.
全国阐述在既有站点中实现Ajax的原则、方法、技巧与实践..
深入理解Ajax技术的基本原理...
内容简介回到顶部↑
本书讲述了如何在现有的web应用程序中添加ajax,为传统的web应用程序带来更好的交互性,从而为应用程序附加更大的价值。本书内容涵盖了ajax基础知识、各种重要的ajax库、ajax的交互效果和高级视觉效果、空间的管理方式、数据的动态处理,还涉及了前沿的mashup技术,以及从头开发ajax需要考虑的方方面面,包括框架和服务端语言的选取、ajax库的应用、紧耦合和松耦合的优劣等等。
本书适用于熟悉传统web应用程序开发过程,了解html、xhtml、css、javascript技术或至少熟悉一种服务端语言的读者。
本书适用于熟悉传统web应用程序开发过程,了解html、xhtml、css、javascript技术或至少熟悉一种服务端语言的读者。
作译者回到顶部↑
本书提供作译者介绍
Shelley Powers是一个软件开发工程师、软件架构师、摄影师以及作家,他创作了大量有关web开发及技术方面的计算机著作,包括由O’Reilly出版的Developing ASP Components、Unix Power Tools第三版、Essential Blogging、Practical RDF、以及Learning JavaScript。这些年,Shelley在多个刊物上发表了很多文章,它们涉及跨浏览器开发、标准、RDF、JavaScript、CSS、以及XML,他也曾就职于很多世界级领先的公司。Shelley的技术网站是http://burningbird.net。...
.. << 查看详细
.. << 查看详细
目录回到顶部↑
前言
第1章 准备迁移到ajax
ajax是这样的技术
开始清理
将表格转换为css布局
继续转换:逐个元素进行转换
处理浏览器特有的怪癖
了解你的客户端基础
为你的网站设计一个框架
渐进增强和彻底翻新
第2章 ajax基础
web应用程序
准备要使用的对象
准备和发送请求
处理ajax响应
端点、javascript沙箱和控件
安全问题
性能初探
最后提一下异步和同步
第3章 ajax工具及术语
第1章 准备迁移到ajax
ajax是这样的技术
开始清理
将表格转换为css布局
继续转换:逐个元素进行转换
处理浏览器特有的怪癖
了解你的客户端基础
为你的网站设计一个框架
渐进增强和彻底翻新
第2章 ajax基础
web应用程序
准备要使用的对象
准备和发送请求
处理ajax响应
端点、javascript沙箱和控件
安全问题
性能初探
最后提一下异步和同步
第3章 ajax工具及术语
译者序回到顶部↑
每每遇到一本好书,都很想和人分享,把它介绍给同事、朋友、甚至是自己的学生,遇到英文书籍时,更是想把它翻译出来,献给和我一样喜欢这本书的读者,但是总是由于时间和精力上的原因,都仅仅是翻译了书中的个别章节,或者是只做了一个读书笔记。尽管如此,与人分享的感觉是快乐的,于是就有了自己的博客(寒雪谷:http://hi.baidu.com/snowyvalley)上的一个栏目:快乐译站。.
然而,现在,当我翻出快乐译站上的很多文章时,才发现仅是结果是快乐的,其中经历的过程并不快乐,甚至是痛苦的。其间要经历很多困扰,在选择技术术语时,让你感觉到仲伯难分,审词酌句时,更令你辗转反侧,美语俚语常常是横竖不通,走投无路,各种词汇间的细微差异足以让你左右为难,心情急躁。在你的体力还没有消之殆尽的时候,你会感觉到脑力已经不足了。就这样,每当遇到山穷水尽的时候,真的想从里面浮上来,透口气,甚至是中途放弃。在翻译这本书的中途就经历了这样的痛苦,自己静下心来,去反思,这本书真的值得花费这样的时间和精力去和大家分享吗?
为了给自己减压,同时更是为了这个疑问,我走进了书店,翻开了琳琅满目的ajax书籍,这些书籍真的是各具特色,有的对模式的分析非常精妙,有的对效果的讲解细致入微,有的确实达到了模式和效果的完美结合,真的让人难分取舍。但是问题是,如果我是一个web开发者,同时,又是一个Ajax初学者,迫于工作需要,想在我的项目中使用Ajax,那么我该需要怎样的一本Ajax书呢?就这个问题我在书架前陷入了思考。
我不想改变我现有的项目,把它推倒重来,我没有时间,也没有精力,项目主管也不会容许我做这样的技术豪赌。我只能是让Ajax作为一个备选方案,让它使我的项目变得更好,而不是为了追求时尚而推翻曾经的积累和努力。我想让我的项目有所“革新”,而不是彻底“革命”,让它寿归正寝。
我不想重蹈覆辙,我想站在别人现在的起点上,继续向前走。我要在各种流行的Ajax库中,寻找最适合我的一个,甚至是综合应用这些库,不仅要扬它们各自的长处,避它们各自的短处,还要让它们彼此和睦相处。
我想在我的传统web中,寻找哪些地方可以进行改进,使它更具交互性和响应性,比如,不必离开当前页面,甚至不必重载页面就可以编辑表单,删除数据,而这一切完成后,又要适当地通知用户,已经为他们出色地完成了任务。仅仅提供文本信息是枯燥的,而且一切统计数据能否不必花费太多的成本,就可以使用图形的方式,形象地反映出来。..
我的web页面空间总是觉得不够用,总是不得不强迫用户去拉动滚动条,我能否在有限的空间内放入更多的内容。
web上每时每刻都有新的服务出现,每时每刻都会有创意出现,比如:Google地图、Flickr照片服务、Technorati博客搜索等等,我们能否结合这些服务或者这些数据,也发挥一次自己的创意,也来一个mashup,制作一杯自己的“鸡尾酒”,对它们再利用,再加工,创造更大的价值,为我的web带来亮点。我不要知识点的简单证明,或者是技术的一味堆砌,我想要一个真正意义上的“实”例,它更加贴近现实,更加真实,而且只要稍做修改就可以应用于现实。
好了,这就是我想要的一本书,它也可能是你想要的一本书,我已经找到了它,它正静静地躺在我的书架上,只不过我曾对它充满怀疑,只不过它是满目英文,我应该离开书店,继续译完它,把它拿出来与您分享。而此刻的您,也找到了这本书,您正把它握在手里,您正在把它和其它书籍进行比较,正在举棋不定,就和我当初站在书店里徘徊时的感觉一样,只要您清楚,您需要的是怎样的一本书,相信您自己的需要,相信您自己的判断力。如果它已经满足了您的需要,您也应该像我一样离开书店,只不过是带着这本书离开书店。
正如本书的作者所说,这本书会是一本非常好的书,因为他得到了所有的支持,我同样会说:这本书会是一本非常好的译本,因为我最终坚定了分享的信念。
在这里要感谢我的家人,容忍我花去业余时间,坐在电脑前,尤其是我的小女儿,每天陪我一直到深夜。还要感谢我的同学和同事,得到了他们的支持和鼓励,最后,还要感谢编辑,感谢他们的耐心和细心。
当然,作为译者,非常渴望在您和作者之间架起一道桥梁,能够让您和作者进行心与心的沟通,把作者的思想直接传递给您,而感觉不到译者的存在。但是由于个人能力所限,还不能达到这种境界,而且纰漏之处,也在所难免,非常真心地希望得到您的批评和指正。...
李秀忠
2007-12-14于深圳
Email:xiuzhong.li@gmail.com
然而,现在,当我翻出快乐译站上的很多文章时,才发现仅是结果是快乐的,其中经历的过程并不快乐,甚至是痛苦的。其间要经历很多困扰,在选择技术术语时,让你感觉到仲伯难分,审词酌句时,更令你辗转反侧,美语俚语常常是横竖不通,走投无路,各种词汇间的细微差异足以让你左右为难,心情急躁。在你的体力还没有消之殆尽的时候,你会感觉到脑力已经不足了。就这样,每当遇到山穷水尽的时候,真的想从里面浮上来,透口气,甚至是中途放弃。在翻译这本书的中途就经历了这样的痛苦,自己静下心来,去反思,这本书真的值得花费这样的时间和精力去和大家分享吗?
为了给自己减压,同时更是为了这个疑问,我走进了书店,翻开了琳琅满目的ajax书籍,这些书籍真的是各具特色,有的对模式的分析非常精妙,有的对效果的讲解细致入微,有的确实达到了模式和效果的完美结合,真的让人难分取舍。但是问题是,如果我是一个web开发者,同时,又是一个Ajax初学者,迫于工作需要,想在我的项目中使用Ajax,那么我该需要怎样的一本Ajax书呢?就这个问题我在书架前陷入了思考。
我不想改变我现有的项目,把它推倒重来,我没有时间,也没有精力,项目主管也不会容许我做这样的技术豪赌。我只能是让Ajax作为一个备选方案,让它使我的项目变得更好,而不是为了追求时尚而推翻曾经的积累和努力。我想让我的项目有所“革新”,而不是彻底“革命”,让它寿归正寝。
我不想重蹈覆辙,我想站在别人现在的起点上,继续向前走。我要在各种流行的Ajax库中,寻找最适合我的一个,甚至是综合应用这些库,不仅要扬它们各自的长处,避它们各自的短处,还要让它们彼此和睦相处。
我想在我的传统web中,寻找哪些地方可以进行改进,使它更具交互性和响应性,比如,不必离开当前页面,甚至不必重载页面就可以编辑表单,删除数据,而这一切完成后,又要适当地通知用户,已经为他们出色地完成了任务。仅仅提供文本信息是枯燥的,而且一切统计数据能否不必花费太多的成本,就可以使用图形的方式,形象地反映出来。..
我的web页面空间总是觉得不够用,总是不得不强迫用户去拉动滚动条,我能否在有限的空间内放入更多的内容。
web上每时每刻都有新的服务出现,每时每刻都会有创意出现,比如:Google地图、Flickr照片服务、Technorati博客搜索等等,我们能否结合这些服务或者这些数据,也发挥一次自己的创意,也来一个mashup,制作一杯自己的“鸡尾酒”,对它们再利用,再加工,创造更大的价值,为我的web带来亮点。我不要知识点的简单证明,或者是技术的一味堆砌,我想要一个真正意义上的“实”例,它更加贴近现实,更加真实,而且只要稍做修改就可以应用于现实。
好了,这就是我想要的一本书,它也可能是你想要的一本书,我已经找到了它,它正静静地躺在我的书架上,只不过我曾对它充满怀疑,只不过它是满目英文,我应该离开书店,继续译完它,把它拿出来与您分享。而此刻的您,也找到了这本书,您正把它握在手里,您正在把它和其它书籍进行比较,正在举棋不定,就和我当初站在书店里徘徊时的感觉一样,只要您清楚,您需要的是怎样的一本书,相信您自己的需要,相信您自己的判断力。如果它已经满足了您的需要,您也应该像我一样离开书店,只不过是带着这本书离开书店。
正如本书的作者所说,这本书会是一本非常好的书,因为他得到了所有的支持,我同样会说:这本书会是一本非常好的译本,因为我最终坚定了分享的信念。
在这里要感谢我的家人,容忍我花去业余时间,坐在电脑前,尤其是我的小女儿,每天陪我一直到深夜。还要感谢我的同学和同事,得到了他们的支持和鼓励,最后,还要感谢编辑,感谢他们的耐心和细心。
当然,作为译者,非常渴望在您和作者之间架起一道桥梁,能够让您和作者进行心与心的沟通,把作者的思想直接传递给您,而感觉不到译者的存在。但是由于个人能力所限,还不能达到这种境界,而且纰漏之处,也在所难免,非常真心地希望得到您的批评和指正。...
李秀忠
2007-12-14于深圳
Email:xiuzhong.li@gmail.com
前言回到顶部↑
Ajax:可以说是几分变革,几分演变,而又有几分完全是炒作。Ajax是一个笼统的术语,它常用于涵盖如下一套技术:.
标记,例如HTML、XHTML、XML和SVG
JavaScript
CSS和XSLT
最后,但也非常重要的是浏览器对象,包括canvas对象和真正执行Ajax的XMLHttpRequest对象。
我们暂且不提人们最近的关注程度,就这些技术而言,其中的大部分都已经应用近十年之久了。那么为什么人们现在还仍旧如此热衷呢?
Ajax不仅仅是一套技术-它还决定了web页面和web应用程序的新的发展方向。我们过去也曾有过这样的决定,但是我们却苦于没有这样的工具,来建立这样的应用程序。现在,这些规范经历了十年的考验,也已经日趋成熟,而且更重要的是,它们受到了web浏览器的广泛支持。新的规范继续涌现,而且这些工具的制造者也比以前更加亲密协作。
几年前,当web开发者最初尝试向web页面加入交互特性时,我们受着浏览器的制约,因为它们支持完全不同的模型,而且有时,甚至受制于不同的脚本语言。就连层叠样式表(Cascading Style Sheets ,CSS),这种作为一种统一的方式向页面添加表现层的技术,在应用时,都因解释的差异而受到困扰,更不必说一些专用的扩展了。
现在,CSS几乎受到了普遍的支持,尽管在一些系统中,还存在着一些“怪癖(quirks)”,其中大部分规范也已经受到了大多数浏览器的支持,而且现在,我们正处在这样的一个平台上,以前不能胜任的事情,现在却可以做的很好。至于脚本,经过ECMA标准组织的努力,我们已经有了一个JavaScript的发布版本,即ECMAScript,而且在Web的上上下下,它都受到了所有主流工具的认可和支持。
标记也变得更加复杂了,而且我们正在从结构松散、变化无常的HTML,向结构严谨、中规中矩的XHTML进行过渡。我们还加入了一些新的XML词汇,例如:可缩放矢量图形(Scalable Vector Graphics,SVG)-一种不必依赖插件和扩展对象,就可以加入交互图形的方式。它是和Canvas对象一起被引入的,它们都独立于任何标记,而且都将被包含在未来的HTML5中, HTML5则是旧的HTML向新的、结构严谨的XHTML过渡的一个中间产物。
然而,我们还没有完全放弃旧的私有对象。现在,与其在一个浏览器上实现它,还不如让它变得更加通用。XMLHttpRequest就是这样的一个对象,它允许我们直接从页面调用web服务,然后,动态地处理结果,而不必重载这个页面。
那么,这对开发者和用户意味着什么呢?它意味着你可以阅读一篇文章,点击它,然后就地编辑它-所有这一切都在同一个页面内完成。我们还可以从表中删除一些行,而且这种删除会立即生效。当然更新也会如此。
我们不必重载页面,或者照片就可以为照片添加分类。或者只通过点击缩略图,就可以放大显示那张照片。
我们对web表单的应用也发生了显著的变化。我们可以在一个列表中做出选择,而这些选项将被自动地添加到另外一个选择列表中。我们还可以使用拖拽的方式对表格内容进行排序,以及折叠一些域来腾出一些空间,或者点击标签页来填充一个大型表单的其他部分,或者来查看其他信息,而且这一切,我们还是不必重载这个页面。
当然,被我们当作“页面”的东西已经发生了变化,而且这种新的视角既有优点也有缺点。当有一百多个页面被加载时,不通过以前的刷新技术,单凭借“页面视图”,我们很难计算出应该为广告付多少费用。搜索引擎公司以及屏幕阅读器1(screen readers)都不能准确地理解动态生成的链接。因为在这种情况下,脚本已经被禁用或者不存在了,当进入依赖脚本的Ajax中时,我们已经没有办法完成任何事情了。
在这里,我们要提及渐进增强(progressive enhancement)的概念。由Steven Champeon根据哲学理论所提出的渐进增强概念认为:我们应该向现有的web技术,加入Ajax效果来增强它,而不是完全取代它。换句话说,你仍然可以建立比较传统的web应用程序,基于表单提交来更新一张表,然后,你可以增强它的功能,即:不必实际提交表单,就可以使用改变的表单域,来更新这张表。
在页面中,如果脚本被禁用,标签页会变成一系列纵向的节。数据没有变化,只是组织形式不同。这时,无论你是通过在PHP中所建立的应用程序,还是通过驻留在Unix box中的应用程序来,请求这些内容,亦或者是在Firefox、Safari以及IE浏览器中,通过JavaScript调用这些内容,这些内容最终将以幻灯播放(slideshow)的方式提供。
利用渐进增强的概念,脚本是否禁用也无关紧要,因为我们并没有丢失功能,仅仅是有些差异罢了。与此同时,Ajax会提高web应用程序的效率,而且在访问这些程序的人当中,大约有80%的人会使用合适的浏览器,而且脚本也是可用的。那么对于你来说最好的消息是:你已经离成功不远了。
读者对象
作为adding Ajax一书的读者,一个主要的假设是:你已经是一个web开发者,你希望通过加入Ajax效果,把你的比较传统的web应用程序升级到更高的层次。也可能,你已经拥有了web表单、服务端驱动(server-side-driven)页面以及静态内容,或者至少,你熟悉传统的web应用程序是如何工作的。这时,你是比较幸运的,你已经拥有了应用程序的“业务端”。现在你就可以把你的页面升级到更高的层次。
标记,例如HTML、XHTML、XML和SVG
JavaScript
CSS和XSLT
最后,但也非常重要的是浏览器对象,包括canvas对象和真正执行Ajax的XMLHttpRequest对象。
我们暂且不提人们最近的关注程度,就这些技术而言,其中的大部分都已经应用近十年之久了。那么为什么人们现在还仍旧如此热衷呢?
Ajax不仅仅是一套技术-它还决定了web页面和web应用程序的新的发展方向。我们过去也曾有过这样的决定,但是我们却苦于没有这样的工具,来建立这样的应用程序。现在,这些规范经历了十年的考验,也已经日趋成熟,而且更重要的是,它们受到了web浏览器的广泛支持。新的规范继续涌现,而且这些工具的制造者也比以前更加亲密协作。
几年前,当web开发者最初尝试向web页面加入交互特性时,我们受着浏览器的制约,因为它们支持完全不同的模型,而且有时,甚至受制于不同的脚本语言。就连层叠样式表(Cascading Style Sheets ,CSS),这种作为一种统一的方式向页面添加表现层的技术,在应用时,都因解释的差异而受到困扰,更不必说一些专用的扩展了。
现在,CSS几乎受到了普遍的支持,尽管在一些系统中,还存在着一些“怪癖(quirks)”,其中大部分规范也已经受到了大多数浏览器的支持,而且现在,我们正处在这样的一个平台上,以前不能胜任的事情,现在却可以做的很好。至于脚本,经过ECMA标准组织的努力,我们已经有了一个JavaScript的发布版本,即ECMAScript,而且在Web的上上下下,它都受到了所有主流工具的认可和支持。
标记也变得更加复杂了,而且我们正在从结构松散、变化无常的HTML,向结构严谨、中规中矩的XHTML进行过渡。我们还加入了一些新的XML词汇,例如:可缩放矢量图形(Scalable Vector Graphics,SVG)-一种不必依赖插件和扩展对象,就可以加入交互图形的方式。它是和Canvas对象一起被引入的,它们都独立于任何标记,而且都将被包含在未来的HTML5中, HTML5则是旧的HTML向新的、结构严谨的XHTML过渡的一个中间产物。
然而,我们还没有完全放弃旧的私有对象。现在,与其在一个浏览器上实现它,还不如让它变得更加通用。XMLHttpRequest就是这样的一个对象,它允许我们直接从页面调用web服务,然后,动态地处理结果,而不必重载这个页面。
那么,这对开发者和用户意味着什么呢?它意味着你可以阅读一篇文章,点击它,然后就地编辑它-所有这一切都在同一个页面内完成。我们还可以从表中删除一些行,而且这种删除会立即生效。当然更新也会如此。
我们不必重载页面,或者照片就可以为照片添加分类。或者只通过点击缩略图,就可以放大显示那张照片。
我们对web表单的应用也发生了显著的变化。我们可以在一个列表中做出选择,而这些选项将被自动地添加到另外一个选择列表中。我们还可以使用拖拽的方式对表格内容进行排序,以及折叠一些域来腾出一些空间,或者点击标签页来填充一个大型表单的其他部分,或者来查看其他信息,而且这一切,我们还是不必重载这个页面。
当然,被我们当作“页面”的东西已经发生了变化,而且这种新的视角既有优点也有缺点。当有一百多个页面被加载时,不通过以前的刷新技术,单凭借“页面视图”,我们很难计算出应该为广告付多少费用。搜索引擎公司以及屏幕阅读器1(screen readers)都不能准确地理解动态生成的链接。因为在这种情况下,脚本已经被禁用或者不存在了,当进入依赖脚本的Ajax中时,我们已经没有办法完成任何事情了。
在这里,我们要提及渐进增强(progressive enhancement)的概念。由Steven Champeon根据哲学理论所提出的渐进增强概念认为:我们应该向现有的web技术,加入Ajax效果来增强它,而不是完全取代它。换句话说,你仍然可以建立比较传统的web应用程序,基于表单提交来更新一张表,然后,你可以增强它的功能,即:不必实际提交表单,就可以使用改变的表单域,来更新这张表。
在页面中,如果脚本被禁用,标签页会变成一系列纵向的节。数据没有变化,只是组织形式不同。这时,无论你是通过在PHP中所建立的应用程序,还是通过驻留在Unix box中的应用程序来,请求这些内容,亦或者是在Firefox、Safari以及IE浏览器中,通过JavaScript调用这些内容,这些内容最终将以幻灯播放(slideshow)的方式提供。
利用渐进增强的概念,脚本是否禁用也无关紧要,因为我们并没有丢失功能,仅仅是有些差异罢了。与此同时,Ajax会提高web应用程序的效率,而且在访问这些程序的人当中,大约有80%的人会使用合适的浏览器,而且脚本也是可用的。那么对于你来说最好的消息是:你已经离成功不远了。
读者对象
作为adding Ajax一书的读者,一个主要的假设是:你已经是一个web开发者,你希望通过加入Ajax效果,把你的比较传统的web应用程序升级到更高的层次。也可能,你已经拥有了web表单、服务端驱动(server-side-driven)页面以及静态内容,或者至少,你熟悉传统的web应用程序是如何工作的。这时,你是比较幸运的,你已经拥有了应用程序的“业务端”。现在你就可以把你的页面升级到更高的层次。
【插图】
评论交流
共有3人开贴评论 3人参与评论 3人参与打分 查看
评价等级:





发表于:2008-4-14 12:45:00
本书的独特视角可能更适合你!本书的标题就给了我们一条重要的暗示。如果你想通过添加一些Ajax效果来提高现有Web应用程序的价值,那么《Adding Ajax》刚好就适合你。如果希望从头开始建立基于Ajax的应用程序结构,本书可能还不能满足这些开发者的要求。
本书阅读起来还是比较快的。这并不是因为缺乏内容,相反,它的内容已经相当丰富!Shelley Powers对本书内容进行了精心地组织,各章内容都尽可能和其他章节独立,因此你不必逐章阅读本书的大部分章节。比如,在第5章讲述了折叠菜单、标签页、以及使用Ajax及其通用脚本库的覆盖效果,如果你对第6章所描述的用户数据实时更新非常感兴趣,那么跳过第5章,完全没有任何问题。
作者引用了一些知名专家(比如Jeremy Keith和Eric Meyer)所写的相关内容,并且随后给出了关于这些内容的大量链接。
本书是一本相当不错的、面向实践的书籍,它包含了大量的代码。但是我在这里还是有一个小小的意见:一些读者希望非常方便地找到这些实例代码,以便可以立即在服务器上进行测试,毕竟重敲这些代码是件非常乏味的事情。O'Reilly为本书提供了一个网页,上面提供了本书的目录,而且还带有内容概述,但是却没有提供代码下载。(译者补充:可能是评论者并没有注意到在书籍封面插图的正下方就提供了实例下载链接。实例下载地址:http://examples.oreilly.com/9780596529369/)
尽管如此,本书仍不失为一本非常优秀的书籍。
——Brett Merkey
本书阅读起来还是比较快的。这并不是因为缺乏内容,相反,它的内容已经相当丰富!Shelley Powers对本书内容进行了精心地组织,各章内容都尽可能和其他章节独立,因此你不必逐章阅读本书的大部分章节。比如,在第5章讲述了折叠菜单、标签页、以及使用Ajax及其通用脚本库的覆盖效果,如果你对第6章所描述的用户数据实时更新非常感兴趣,那么跳过第5章,完全没有任何问题。
作者引用了一些知名专家(比如Jeremy Keith和Eric Meyer)所写的相关内容,并且随后给出了关于这些内容的大量链接。
本书是一本相当不错的、面向实践的书籍,它包含了大量的代码。但是我在这里还是有一个小小的意见:一些读者希望非常方便地找到这些实例代码,以便可以立即在服务器上进行测试,毕竟重敲这些代码是件非常乏味的事情。O'Reilly为本书提供了一个网页,上面提供了本书的目录,而且还带有内容概述,但是却没有提供代码下载。(译者补充:可能是评论者并没有注意到在书籍封面插图的正下方就提供了实例下载链接。实例下载地址:http://examples.oreilly.com/9780596529369/)
尽管如此,本书仍不失为一本非常优秀的书籍。
——Brett Merkey
| 我要写评论 |
| 查看所有评论交流(共3条) |


点击看大图

加载中...