第一部分 重新思考Web应用
第1章 一种新的Web设计方法
1.1 为什么需要Ajax富客户端?
1.1.1 比较用户体验
1.1.2 网络延迟
1.1.3 异步交互
1.1.4 独占或瞬态的使用模式
1.1.5 忘掉Web
1.2 Ajax的四个基本原则
1.2.1 浏览器中的是应用而不是内容
1.2.2 服务器交付的是数据而不是内容
1.2.3 用户交互变得流畅而连续
1.2.4 有纪律的严肃编程
1.3 真实世界中的Ajax富客户端
1.3.1 现状
1.3.2 Google Maps
1.4 Ajax的替代方案
1.4.1 基于Macromedia Flash的方案
1.4.2 Java Web Start及其相关技术
1.5 小结
1.6 资源
第2章 Ajax新手上路
2.1 Ajax的关键元素
2.2 用JavaScript改善用户体验
2.3 用CSS定义应用的外观
2.3.1 CSS选择器
2.3.2 CSS样式属性
2.3.3简单的CSS例子
2.4 用DOM组织视图
2.4.1 使用JavaScript操作DOM
2.4.2 寻找DOM节点
2.4.3 创建DOM节点
2.4.4 为文档增加样式
2.4.5 捷径:使用innerHTML属性
2.5 使用XML技术异步加载数据
2.5.1 IFrame
2.5.2 XMLDocument和XMLHttpRequest对象
2.5.3 向服务器发送请求
2.5.4 使用回调函数监视请求
2.5.5 完整的生命周期
2.6 Ajax有何不同
2.7 小结
2.8 资源
第3章 使Ajax秩序井然
3.1 从混沌到秩序
3.1.1 模式:创造一个通用的词汇
3.1.2 重构与Ajax
3.1.3 保持均衡
3.1.4 重构实战
3.2 一些小型重构的案例研究
3.2.1 跨浏览器不一致性:Facade和Adapter模式
3.2.2 管理事件处理函数:Observer模式
3.2.3 重用用户操作处理函数:Command模式
3.2.4 保持对资源的唯一引用:Singleton模式
3.3 模型-视图-控制器
3.4 Web服务器端的MVC
3.4.1 不使用模式的Ajax Web服务器
3.4.2 重构领域模型
3.4.3 从表现中分离内容
3.5 第三方的库和框架
3.5.1 跨浏览器库
3.5.2 UI组件和UI组件套件
3.5.3 应用框架
3.6 小结
3.7 资源
第二部分 核心技术
第4章 作为应用的页面
4.1一种不同类型的MVC
4.1.1 以不同的规模重复MVC模式
4.1.2 在浏览器端应用MVC
4.2 Ajax 应用中的视图
4.2.1 将逻辑从视图中分离
4.2.2 保持视图与逻辑的分离
4.3 Ajax 应用中的控制器
4.3.1 传统的JavaScript事件处理函数
4.3.2 W3C 事件模型
4.3.3 在JavaScript中实现灵活的事件模型
4.4 Ajax 应用中的模型
4.4.1 使用JavaScript为业务领域建模
4.4.2 与服务器交互
4.5 从模型生成视图
4.5.1 JavaScript对象的反射
4.5.2 处理数组和对象
4.5.3 添加控制器
4.6 小结
4.7 资源
第5章 服务器的角色
5.1 与服务器配合工作
5.2 编写服务器端代码
5.2.1 流行的实现语言
5.2.2 N层体系架构
5.2.3 维护客户端和服务器端的领域模型
5.3 大局观:通用的服务器端设计
5.3.1 不使用框架进行简单的Web服务器编码
5.3.2 使用Model2工作流框架
5.3.3 使用基于组件的框架
5.3.4 使用面向服务的体系架构
5.4 细节:交换数据
5.4.1 仅限于客户端的交互
5.4.2 介绍行星浏览器的例子
5.4.3 从Web页面的角度思考:以内容为中心的交互
5.4.4 从插件的角度思考:以脚本为中心的交互
5.4.5 从应用的角度思考:以数据为中心的交互
5.5 向服务器写数据
5.5.1 使用HTML表单
5.5.2 使用XMLHttpRequest对象
5.5.3 有效地管理用户的更新
5.6 小结
5.7 资源
第三部分 专业级的Ajax
第六章 用户体验
6.1 做正确的事:开发高质量的应用
6.1.1 响应性
6.1.2 健壮性
6.1.3 一致性
6.1.4 简单性
6.1.5 付诸实践
6.2 让用户知情
6.2.1 处理自己请求的响应
6.2.2 处理其他用户提交的更新
6.3 为Ajax设计通知系统
6.3.1 对通知建模
6.3.2 定义用户界面需求
6.4 实现通知框架
6.4.1 显示状态栏图标
6.4.2显示详细的通知信息
6.4.3 集成
6.5使用通知框架处理网络请求
6.6 表示数据的时效性
6.6.1定义简单的突出显示格式
6.6.2 用Scriptaculous效果库进行突出显示
6.7 小结
6.8 资源
第7章 安全性与Ajax
7.1 JavaScript与浏览器安全性
7.1.1 引入来源服务器策略
7.1.2 Ajax的相关考虑
7.1.3 子域问题
7.1.4 跨浏览器安全性
7.2 使用远程服务进行通信
7.2.1 代理远程服务
7.2.2 使用Web服务
7.3 保护机密数据
7.3.1 中间人
7.3.2 使用安全HTTP
7.3.3 在普通HTTP上使用JavaScript加密数据
7.4 Ajax数据流的访问策略
7.4.1 设计安全的Web层
7.4.2 限制对Web数据的访问
7.5 小结
7.6 资源
第8章 性能
8.1 什么是性能?
8.2 JavaScript执行速度
8.2.1 测定应用时间的艰难方式
8.2.2 使用Venkman性能分析器
8.2.3 优化Ajax应用的执行速度
8.3 JavaScript内存使用量
8.3.1 避免内存泄漏
8.3.2 Ajax的特殊考虑因素
8.4 考虑性能的设计
8.4.1 测量内存使用量
8.4.2简单示例
8.4.3 结果:如何将内存使用量缩减150倍
8.5 小结
8.6 资源
第四部分 Ajax实例研究
第9章 动态双组合功能
9.1 双组合脚本
9.1.1 客户端解决方案的局限性
9.1.2 服务器端解决方案的限制
9.1.3 基于Ajax的解决方案
9.2 客户端体系架构
9.2.1 设计表单
9.2.2 设计客户端/服务器端交互
9.3 服务器端的VB.NET实现
9.3.1 定义XML响应格式
9.3.2 编写服务器端代码
9.4 显示结果
9.4.1 遍历XML文档
9.4.2 应用CSS
9.5 高级问题
9.5.1 允许多选择查询
9.5.2 将双组合扩展为三组合
9.6 重构
9.6.1 新的和改进过的net.ContentLoader
9.6.2 创建双组合组件
9.7 小结
第10章 输入前提示
10.1 10.1 考察输入前提示应用
10.1.3 10.1.1常见的输入前提示的特征
10.1.4 10.1.2 Google Suggest
10.1.3 实战开发Ajax输入前提示
10.2 服务器端框架:C#
10.2.1 服务器与数据库
10.2.2 测试服务器端代码
10.3 客户端框架
10.3.1 HTML
10.3.2 JavaScript
10.3.3 访问服务器
10.4 添加功能:包含不同查询的多个元素
10.5 10.5 重构
10.5.1 第一天:开发TextSuggest组件的游戏计划
10.5.2 第2天:创建TextSuggest――清晰而且可配置
10.5.3 第3天:激活Ajax
10.5.4 第4天:事件处理
10.5.5 第5天:提示的弹出框的UI
10.5.6 重构报告
10.6 小结
第11章 增强的Ajax Web门户
11.1 正在进化的门户
11.1.1 传统门户
11.1.2 拥有丰富的用户界面的门户
11.2 使用Java的Ajax门户的体系架构
11.3 Ajax登录
11.3.1 用户表
11.3.2 服务器端的登录代码:用Java实现
11.3.3 客户端登录框架
11.4 实现DHTML窗口
11.4.1 门户窗口数据库
11.4.2 门户窗口的服务器端代码
11.4.3 添加外部JS库
11.5 添加Ajax自动保存功能
11.5.1 修改库的代码
11.5.2 自动保存信息到数据库
11.6 重构
11.6.1 定义构造器
11.6.2 修改AjaxWindows.js库
11.6.3 指定protal命令
11.6.4 执行Ajax处理
11.6.5 重构报告
11.7 小结
第12章 使用XSLT的动态搜索
12.1 理解搜索技术
12.1.1 考察传统的搜索
12.1.2 帧和弹出窗口方法的缺点
12.1.3 研究使用Ajax和XSLT的动态搜索
12.1.4 向客户端发回结果
12.2 客户端的代码
12.2.1 设置客户端
12.2.2 启动搜索过程
12.3 服务器端的PHP代码
12.3.1创建XML文档
12.3.2 创建XSLT文档
12.4合并XSLT和XML文档
12.4.1 使用微软的IE
12.4.2 使用Mozilla
12.5 完成搜索
12.5.1 应用层叠样式表
12.5.2 改善搜索
12.5.3 决定使用XSLT
12.5.4 克服Ajax书签支持的缺陷
12.6 重构
12.6.1 XSLTHelper
12.6.2 动态搜索组件
12.6.3 重构报告
12.7 小结
第13章 使用AJAX创建独立的应用
13.1 从外部读取信息
13.1.1 查找XML提要
13.1.2 RSS结构
13.2 创建丰富的用户界面
13.2.1 流程
13.2.2不使用表格的HTML框架
13.2.3 采用CSS方法做排版
13.3 加载RSS提要
13.3.1 全局作用域
13.3.2 Ajax预加载功能
13.4 增加丰富的渐变效果
13.4.1 跨浏览器的不透明规则
13.4.2 实现淡入/淡出渐变
13.4.3 集成JavaScript定时器
13.5 附加功能
13.5.1 插入额外提要
13.5.2集成跳过和暂停功能
13.6 避免项目的限制
13.6.1克服Mozilla的安全限制
13.6.2修改应用的范围
13.7 重构
13.7.1 RSS阅读器模型
13.7.2 RSS阅读器视图
13.7.3 RSS阅读器控制器
13.7.4 重构报告
13.8 小结
附录A Ajax工具箱
A.1 选择正确的工具集更加聪明地工作
A.1.1获取适合的工具
A.1.2 创建自己的工具
A.1.3 维护工具箱
A.2 编辑器和IDE
A.2.1 在代码编辑器中需要什么功能
A.2.2 当前的工具
A.3 调试器
A.3.1为什么要使用调试器
A.3.2 JavaScript调试器
A.3.3 HTTP 调试器
A.3.4创建自己的跨浏览器输出控制台
A.4 DOM 检查器
A.4.1 使用Mozilla DOM 检查器
A.4.2 IE的DOM 检查器
A.5 安装Firefox扩展
A.6 资源
附录B 面向对象程序员的JavaScript
B.1 JavaScript不是Java
B.2 JavaScript中的对象
B.2.1创建一个开箱即用(ad hoc)的对象
B.2.2 构造函数、类和原型
B.2.3 扩展内建类
B.2.4 原型的继承
B.2.5 JavaScript对象的反射
B.2.6 接口和“鸭子类型”
B.3 方法和函数
B.3.1 函数是一等公民
B.3.2 向对象附加函数
B.3.3 从其他对象借用函数
B.3.4 Ajax事件处理和函数上下文
B.3.5 JavaScript中的闭包
B.4 小结
B.5 资源
附录C Ajax框架和库