前言 1
绪论 13
第一部分 构建你的应用 21
第1章 构建Save The Child应用 21
先考虑移动 22
引入Balsamiq Mockups 23
项目委托人与Web设计师交流 24
创建第一个原型图 25
将原型图变成原型 28
单页面应用 28
运行WebStorm的代码示例 29
第一个原型 29
主页面JavaScript 34
页脚部分 38
捐赠部分 39
增加视频 44
增加HTML5视频元素 44
嵌入YouTube视频 46
增加地理定位支持 49
地理定位基础 50
与Google Maps集成 52
使用Modernizr检测浏览器特性 56
Google Maps的搜索和多个标记 60
小结 63
第2章 使用Ajax和JSON 65
理解Ajax 65
了解JSON 66
使用Ajax 67
从服务器获取数据 68
Ajax:优点和缺点 71
从HTML文件填充州和国家 71
使用JSON 74
从JSON文件填充州和国家 76
JSON中使用数组 77
使用Ajax和JSON加载慈善活动 78
在CMS中使用JSON 80
用Java处理JSON 81
压缩JSON 82
为Save The Child增加图表 83
用画布元素增加图表 84
使用SVG增加图表 88
使用JSONP从其他服务器加载数据 91
Beer和JSONP 92
小结 95
第3章 jQuery库介绍 96
jQuery入门 97
Hello World 99
使用选择器和过滤器 100
用JSFiddle测试jQuery代码 100
过滤元素 101
处理事件 102
使用方法on()关联事件处理器和元素 103
委托事件 104
结合使用Ajax和jQuery 105
处理简写方法 106
使用jQuery编写Save The Child 108
登录和捐赠 108
使用jQuery Ajax加载HTML州和国家 111
使用jQuery Ajax加载JSON州和国家 112
提交捐赠表单 114
使用jQuery插件 120
使用插件验证捐赠表单 121
增加图像滑动条 123
小结 125
第二部分 企业相关问题 129
第4章 用Ext JS框架开发Web应用 129
JavaScript框架研究 129
选择使用Ext JS 130
下载和安装Ext JS 131
熟悉Ext JS和工具 132
创建Hello World的第一个版本 133
用Sencha CMD工具生成应用 134
选择Ext JS发布版本 138
声明、加载和实例化类 139
最佳实践:MVC 143
研究组件生命周期 149
处理事件 151
指定布局 152
用Ext JS开发Save The Child 153
建立Eclipse IDE和Apache Tomcat 154
运行Save The Child UI的上半部分 158
完成Save The Child 171
小结 184
第5章 企业开发人员选择的生产力工具 185
使用Node.js、V8和npm 186
利用Grunt自动完成 186
分析最简单的Gruntfile 187
使用Grunt运行JSHint检查 187
监视文件改变 189
使用Bower 190
使用Yeoman 192
使用Ext JS和CDB完成高效企业Web开发 196
Ext JS MVC应用搭建 196
生成一个CRUD应用 199
数据分页 206
小结 210
第6章 模块化大型JavaScript项目 211
模块化基础 213
模块化探索 215
模块模式 215
CommonJS 217
异步模块定义 219
统一模块定义 222
ECMAScript 6模块 223
将SaveThe Child应用划分为模块 226
RequireJS配置:config.js 229
编写AMD模块 230
按需加载模块 231
使用RequireJS插件 234
使用RequireJS优化器 234
利用中介者模式实现松耦合模块间通信 237
小结 242
第7章 使用JavaScript的测试驱动开发 243
为什么要测试? 244
测试基础 244
单元测试 245
集成测试 245
功能测试 245
负载测试 246
测试驱动开发 248
使用QUnit实现TDD 250
结合QUnit建立Grunt 250
使用Jasmine的行为驱动开发 254
多浏览器测试 264
测试DOM 268
使用TDD构建Save The Child应用 270
建立ExtJS应用测试工具 270
测试模型 272
测试控制器 274
测试视图 276
建立IDE完成TDD 277
小结 280
第8章 将HTTP升级到WebSocket 281
使用HTTP实现近实时应用 282
轮询 282
长轮询 283
HTTP流模式 283
实现服务器发送事件 284
WebSocket API介绍 285
WebSocket接口 286
客户端API 287
使用WebSocket框架 293
Portal 294
Atmosphere 294
选择应用级消息格式 295
CSV 296
XML 296
JSON 297
Google协议缓冲区 297
结合代理使用WebSocket 299
为Save The Child增加拍卖功能 300
使用Chrome开发者工具监视WebSocket流量 306
使用Wireshark监听WebSocket帧 309
创建SaveThe Child拍卖协议 314
小结 316
第9章 Web应用安全介绍 318
HTTP与HTTPS 319
认证和密码 320
基本认证和摘要认证 320
单点登录 321
处理密码 323
授权 324
基于Oauth的认证和授权 324
使用OpenID Connect和JSON Web Token实现联合身份 325
OAuth 2.0主要组成 327
Save The Child与OAuth 327
最大安全风险 329
注入 329
跨站点脚本 331
法规符合性和企业安全 333
小结 335
第三部分 响应式Web设计和移动设备 341
第10章 响应式设计:通用网站设计 341
一个版本还是两个版本? 342
有多少用户代理 346
重返原型设计 349
CSS媒体查询 353
多少个断点? 360
流网格 361
从绝对大小转向相对大小 361
窗口作为网格 362
响应式CSS:好消息 371
建立响应式Save The Child应用 371
流媒体 381
小结 383
第11章 jQuery Mobile 384
获得jQuery Mobile 384
组织代码 385
查看移动设备上的页面 388
jQuery Mobile中的样式 390
增加页面导航 391
增加持久工具条 395
使用jQuery Mobile实现Save The Child 400
建立移动版本原型 400
项目结构和导航 415
部分代码段 421
小结 436
第12章 Sencha Touch 437
Sencha Touch介绍 438
完成代码生成和发布 438
构造UI 445
容器 445
使用Sencha Touch实现Save The Child 451
构建应用 451
Application对象 452
主视图 454
控制器 460
Save The Child中的其他视图 463
存储库和模型 479
处理水平模式 481
jQuery Mobile与Sencha Touch比较 482
第13章 混合移动应用 483
原生应用 483
原生应用与Web应用 484
混合应用 485
Cordova和PhoneGap 485
Titanium 487
最后结论 488
PhoneGap工作流介绍 488
创建另一个Hello World 489
在iOS设备上测试应用 494
安装更多本地SDK 495
使用Adobe PhoneGap Build服务 496
发布移动应用 500
使用PhoneGap实现Save The Child 502
使用PhoneGap打包任意HTML5应用 502
为Save The Child增加相机访问 503
为照片提供服务器端支持 506
小结 509
第14章 后记 510
HTML5不是玫瑰花园 510
Dart:一种新兴语言 511
HTML5正当时 513
附录A 部分HTML5 API 515
附录B 运行代码示例和IDE 552