读书人

深入Ajax架构与最佳实践

发布时间: 2010-04-16 07:17:14 作者:

 深入Ajax架构与最佳实践


基本信息出版社:人民邮电出版社
页码:275 页
出版日期:2009年08月
ISBN:7115210926/9787115210920
条形码:9787115210920
版本:第1版
装帧:平装
开本:16
正文语种:中文
丛书名:图灵程序设计丛书Web开发系列
外文书名:Advanced Ajax:Architecture and Best Practices

内容简介 《深入Ajax架构与最佳实践》非常适合中高级 Web开发人员和对 Web易用性有研究的专业人士阅读和参考。作者将 Ajax作为常规工具放在富 Web应用开发的大背景下,从架构与最佳实践的角度,重新加以评估和审视。全书内容涉及易用性、易访问性、易伸缩性、易扩展性、易维护性、代码调试、性能优化和 Web安全。是一本理论与实践并重、架构与实现皆宜的高端 Ajax开发参考书。
媒体推荐 “本书不仅介绍了编程技术,而且全面讲解了Ajax应用程序的生命周期。如果你想成为一名专业的前端开发人员,一定会被本书中关于架构的真知灼见和最佳实践深深打动。”
  ——Andi Guln"lans,PHP创始人暨zend技术公司CTO
“本书循序渐进地讲述技术背后的最佳设计和实践,包括很多好的模式和实践。”
  ——John R.Dance。UIEvolution公司首席架构师
编辑推荐 《深入Ajax架构与最佳实践》正好满足了这一需求,是一部使用Ajax构建关键业务、产品品质Web应用程序的权威指南。作者系统地讲解了与Ajax相关的设计、架构和开发问题,提供了难得一见的成熟模式和优秀的代码示例,许多主题的阐述都达到了前所未有的深度:实现JavaScript自定义事件以降低耦合性和增强灵活性、有效解决Ajax传统的易访问性局限、使用压缩及其他技术减少网络潜伏时间,等等。通过学习理解《深入Ajax架构与最佳实践》介绍的最佳实践,企业级Ajax开发人员可以解决面临的各种问题。用Ajax构建关键任务的企业级Web应用,结合丰富示例深入讲解Ajax架构和最佳实践,涵盖整个开发周期:架构、编程、调试、性能优化、安全、文档编写。是的,你可以甩Ajax开发企业级应用!随着Web逐渐成为主流计算平台,越来越多关键任务应用开始采用Ajax技术构造。但是,挑战也是巨大的,开发人员必须解决企业级应用开发中易伸缩性、性能、安全性、可靠性、易维护性和可重用性等方面的问题。
目录
第0章 绪论 1
0.1 首字母缩写——Ajax 1
0.1.1 异步 2
0.1.2 JavaScript 2
0.1.3 XML 3
0.2 本书目的 3
0.3 阅读要求 6

第1章 易用性 8
1.1 界面与橱窗 8
1.2 用户期望 11
1.3 指示器及其他用户反馈形式 12
1.3.1 动态图示 13
1.3.2 进度指示器 15
1.3.3 在循环中把握用户需求 17
1.4 语义标记 23
1.4.1 更易访问 23
1.4.2 更易使用 24
1.4.3 更易维护 25
1.4.4 更易解析 26
1.5 合理利用CSS和JavaScript 29

第2章 易访问性 33
2.1 WCAG和508条款 33
2.1.1 WCAG 34
2.1.2 508条款 39
2.2 屏幕阅读器可以处理Ajax 40
2.2.1 内容替换 41
2.2.2 表单验证 42
2.3 不唐突的Ajax 43
2.4 围绕易访问性设计 45
2.4.1 高对比度设计 45
2.4.2 可缩放界面 46
2.4.3 容易对准的控件 48
2.5 WAI-ARIA 48

第3章 客户端应用程序架构 51
3.1 对象和事件触发 51
3.1.1 本地对象事件处理 52
3.1.2 JavaScript对象 54
3.2 模型-视图-控制器设计模式 67
3.2.1 模型 68
3.2.2 视图 72
3.2.3 控制器 80
3.3 事件驱动的应用程序开发 83

第4章 调试客户端代码 85
4.1 验证,验证,再验证 85
4.1.1 标记验证程序 86
4.1.2 CSS验证程序 87
4.1.3 语义提取程序 87
4.2 浏览器工具和插件 88
4.2.1 控制台 88
4.2.2 IE 89
4.2.3 Firefox 92
4.2.4 Opera 97
4.2.5 Safari 98
4.3 JavaScript分析 100
4.4 单元测试 104
4.4.1 断言 106
4.4.2 测试设置 107
4.4.3 测试本身 110
4.4.4 模拟对象 112
4.4.5 测试套件 115

第5章 性能优化 117
5.1 数据库性能 117
5.1.1 模式 118
5.1.2 查询 120
5.2 带宽和潜伏时间 122
5.2.1 带宽 122
5.2.2 潜伏时间 125
5.3 缓存 127
5.3.1 文件系统 128
5.3.2 内存 130
5.3.3 完成实现 136
5.4 善用HTTP/1.1 137
5.4.1 If-Modified-Since 140
5.4.2 Range 142
5.5 PHP分析 144
5.5.1 Advanced PHP Debugger 144
5.5.2 Xdebug 147

第6章 易伸缩、易维护的Ajax 151
6.1 通用实践 151
6.1.1 处理器使用 151
6.1.2 内存使用 153
6.2 简单界面集合 157
6.2.1 模块性 157
6.2.2 延迟加载 160
6.3 紧凑、丰富的界面 162
6.3.1 单片应用程序 163
6.3.2 预加载 165

第7章 服务器端应用程序架构 168
7.1 设计多界面应用程序 168
7.2 模型-视图-控制器设计模式 171
7.2.1 模型 171
7.2.2 控制器 180
7.2.3 视图 189
7.3 在模板引擎中使用工厂模式 194

第8章 保证Web应用程序安全 199
8.1 HTTPS 200
8.1.1 为什么使用HTTPS 200
8.1.2 安全与性能 201
8.2 SQL注入 202
8.2.1 勿用魔术引号 203
8.2.2 过滤 203
8.2.3 预处理语句 205
8.3 XSS 205
8.3.1 转义标记 206
8.3.2 转义URL 209
8.4 CSRF 211
8.4.1 检查Referer 212
8.4.2 提交额外的首部 214
8.4.3 辅助、随机的记号 215
8.5 不要相信用户 217
8.6 不要相信服务器 218

第9章 编写文档 221
9.1 没错,需要编写文档 221
9.1.1 保留记忆 221
9.1.2 简化培训 223
9.1.3 防止意外 223
9.2 API文档 224
9.2.1 phpDocumentor 224
9.2.2 JSDoc 230
9.3 内部开发文档 236
9.3.1 编码规范 236
9.3.2 设计规范 239
9.3.3 样式规范 240

第10章 游戏开发 242
10.1 不同类型的安全 243
10.1.1 验证 243
10.1.2 服务器端逻辑 245
10.2 单人游戏 247
10.3 多人“实时”游戏 252
10.3.1 流响应 252
10.3.2 WHATWG的event-source元素 257
10.3.3 前兆动画 259

第11章 结束语 262
11.1 心系用户 262
11.2 面向未来设计 263
11.3 面向未来开发 263

附录A 资源 265
附录B OpenAjax 267

参考文献 273
……
序言 作为JavaScript技术发展的一个新阶段,作为客户与服务器通信的一种创新手段,AjaX已经成为一种标志、一个里程碑——套用一句永远不会过时的话说,AjaX必将甚至已经被载入Web发展的史册。在Aiax出现之前,JavaScript“考虑”的只是怎么提升当前页面这“一亩三分地儿”的效益—HlTML就是这一时期的代表性技术)。由于不能与服务器直接对话,JavaScript的数据处理能力被人遗忘,它曾一度成为只能制作各种花哨特效的“玩具式语言”;而在AjaX出现之后,对.JavaScript的探索和研究才真正蓬勃发展起来,JavaScript从备受误解的编程语言一跃变成极为流行的语言。
这是一部从全新视角审视AjaX技术的著作。正如本书绪论中所说的:“Ajax在本书中并不是作为最新最伟大的Web7干发利器存在的;相反,它仅作为一种工具存在,与其他工具没有什么区别,即在某些情况下极为有用,但在其他情况下则完全属于滥用。”相信拥有丰富Ajax技术开发经验的人,对作者所持的这种观点会很容易产生共鸣。
Ajax技术返朴归真的一个重要体现,就是人们开始从常规、大众化应用程序开发的视角来重新审视、定位它。纵观全书的组织结构,从易用性、易访问性、易伸缩性(或易扩展性)、易维护性,到客户端、服务器端应用架构,再到调试代码、性能优化、’Web应用程序安全甚至编写文档,本书无处不渗透出作者从一名饱经沧桑的开发人员的视角对AjaX技术及应用溯本求源式的解读。
老子《道德经》三十二章有云:“始制有名,名亦既有,夫亦将知止,知止可以不殆。”曾子《大学》的开篇也有相同阐述:“知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。”从2005年得名至今,AjaX已经成为WebYF发人员无人不知、无人不懂的技术。2000年前的智者当然不可能预见今天Ajax技术的流行,但是“物有本末,事有终始,知所先后,则近道矣”,正是先贤留传给后世的人生智慧。本书揭示了Ajax技术的本来面貌,对它因何而起,因何而终,作者都给出了自己独到、深入的思考和观点。喜欢创根问底儿而且想要完善自身AjaxYF发技能的读者一定会感到本书独辟蹊径、别开生面。
在翻译本书过程,得到了谢廷晟、李琳骁、Steven Mak的热情帮助,特此致谢。同时,还要感谢本书执行编辑杨爽在编辑此书过程中付出的努力。
本书由张过负责翻译,参加翻译工作的还有宋会敏、李松峰、秦绪文、李丽、程宝杰、宋连海、付荣艳、左艳坡、刘英、李炜、李雅雯、熊俊芹、封耀杰、贾爱华等。
文摘 插图:


即使是JavaScript生成以上DOM结构,其中也没有包含任何行内样式、嵌入的事件侦听器及其他手工编写这些标记时必须避免的直接关联。在此过程中的任何一点,如果由于某种原因导致JavaScript代码的运行被中断,应用程序也仍然能够继续运行。而与此同样重要的是,无论应用程序运行到哪个环节,通过标记呈现给用户的界面即使是用户使用辅助技术第一次打开,也应该具有同等的易访问性。
由于这种做法保留了用户期望的标记(或者,至少是标记的行为更符合用户期望),因此也使所有用户都能更容易地使用Web应用程序。在多数现代浏览器中,用户都可以通过在单击链接或提交表单时按住一个键(MacOS中的Command键)打开一个新的标签页。如果标记中包含嵌入的事件处理程序而不是遵循标准,那么该行为可能中断,最终可能导致莫名其妙的用户不再使用web应用程序,甚至自己编写一段用户脚本以实现期望的操作。无论如何,喜欢用嵌入事件处理程序这样的编码捷径所反映出来的,要么是开发人员在编写应用程序时只图一时省事,要么就是他们想把既定的使用模式强加给用户——但这种使用模式根本不会奏效。2.4围绕易访问性设计
为了简化设计和开发易访问的Web应用程序,在初始的应用程序设计中融合某些思想对相关的所有人员都是一个明智的选择。否则,只能是在开发的最后几步中硬塞进一些易访问性。虽然一个应用程序的易访问性很大程度上取决于其实现而不是初始设计,但某些易访问性的确来源于初始时的一些想法。2.4.1高对比度设计
虽然多数操作系统都有增强屏幕对比度的标准方式,但这对于解决设计中的文本颜色过分接近元素背景的问题通常于事无补。当前的WCAG 2.0文档要求了两种亮度比率(www.w3.ore,/TR/WCAG20/appendixA.html#1uminositycontrastdef):2级的5:1或3级的10:1。
实践中,这个要求意味着如果为页面中的文本设置了明确的颜色值,那么就必须为其背景颜色也设置明确的值。而且,两种颜色值之间必须具有足够大的对比度,无论文本下面是否有背景图像。背景图像可能加载失败,比如用户在偏好设置中选择不加载背景图像(根据上网带宽,许多手机浏览器用户都会禁用图像,但不会禁用CSS),或者在加载过程中出现了某些问题。因此,保持背景颜色较暗或较亮更容易增大亮度比率,同时也为设计人员留下了创作的空间,而且不会影响视力差的用户使用。
位于黑色背景上的颜色rgb(100,
……
读书人网 >程序设计

热点推荐