内容简介
《JavaScript Web 富应用开发》Developing JavaScript Web Applications是 Alex MacCaw 的新作(由O'Reilly出版发行),本书系统而深入的讲解了如何使用最前沿的Web技术构建下一代互联网富应用程序。作者 Alex MacCaw 是一名Ruby/JavaScript 程序员,在开源社区中很有名望,是Spine框架的作者,同时活跃在纽约、旧金山和柏林的各大 Ruby/Rails 论坛。除了作为一名工程师,他还喜欢带着他的尼康D90和冲浪板环游世界。
有赖于强大的JavaScript引擎以及CSS3和HTML5新技术,如今的JavaScript Web 富应用的用户体验已经可以和桌面系统相媲美。关键是如何平滑的将服务器端的复杂度移植到客户端,这并不容易做到。这本书将专注于讲述如何构建“优雅又不失高水准”(state of the art)的JavaScript应用,包括软件架构、模板引擎、框架和库、同服务器的消息通信等内容。
通过由浅入深的讲解,你将学会如何构建具有丰富交互以及优雅体验的JavaScript应用,书中同样提供了大量的示例代码,可以帮助你更深入的理解很多重要的概念。
揭开MVC的神秘面纱,教你如何设计合理的架构以及处理应用内部模块之间的依赖
介绍模板引擎和数据绑定
讲解远程数据加载、第二代Ajax以及跨域请求
利用WebSockets和Node构建实时应用
拖拽上传文件以及上传进度提示
讲解主流的库和框架,包括jQuery、JavaScriptMVC以及Backbone
编写测试用例,并使用控制台工具来调试你的应用
部署应用的最佳实践,比如缓存机制和代码压缩等
作品目录
目 录
第1章 MVC和类 ............................................................1
最初 .........................................................................................................................1
增加结构 ..................................................................................................................2
什么是MVC ............................................................................................................2
模型 ..................................................................................................................3
视图 ..................................................................................................................4
控制器 ..............................................................................................................5
向模块化进军,创建类 ............................................................................................6
给类添加函数...........................................................................................................7
给“类”库添加方法 ...............................................................................................8
基于原型的类继承 .................................................................................................10
给“类”库添加继承 ............................................................................................. 11
函数调用 ................................................................................................................12
控制“类”库的作用域 ..........................................................................................15
添加私有函数.........................................................................................................17
“类”库 ..................................................................................................................18
第2章 事件和监听 ........................................................21
监听事件 ................................................................................................................21
事件顺序 ................................................................................................................22
取消事件 ................................................................................................................23
事件对象 ................................................................................................................23
事件库 ....................................................................................................................25
切换上下文 ............................................................................................................26
委托事件 ................................................................................................................26
自定义事件 ............................................................................................................27
自定义事件和jQuery 插件 .....................................................................................28
DOM 无关事件 ......................................................................................................30
第3章 模型和数据 ........................................................33
MVC 和命名空间 ...................................................................................................33
构建对象关系映射(ORM) ...................................................................................34
原型继承 ........................................................................................................35
添加ORM 属性 ..............................................................................................36
持久化记录.....................................................................................................37
增加ID 支持 ..........................................................................................................39
寻址引用 ................................................................................................................40
装载数据 ................................................................................................................41
直接嵌套数据 .................................................................................................42
通过Ajax 载入数据 ........................................................................................42
JSONP ............................................................................................................46
跨域请求的安全性 .........................................................................................46
向ORM 中添加记录 ..............................................................................................47
本地存储数据.........................................................................................................47
给ORM 添加本地存储 ..........................................................................................49
将新记录提交给服务器 ..........................................................................................51
第4章 控制器和状态 .....................................................53
模块模式 ................................................................................................................54
全局导入 ........................................................................................................54
全局导出 ........................................................................................................54
添加少量上下文 .....................................................................................................55
抽象出库 ........................................................................................................56
文档加载完成后载入控制器 ..........................................................................58
访问视图 ........................................................................................................59
委托事件 ........................................................................................................61
状态机 ....................................................................................................................63
路由选择 ................................................................................................................65
使用URL 中的hash .......................................................................................65
检测hash 的变化 ............................................................................................66
抓取Ajax .......................................................................................................67
使用HTML5 History API ...............................................................................68
第5章 视图和模板 ........................................................71
动态渲染视图.........................................................................................................71
模板 .......................................................................................................................73
模板Helpers ...................................................................................................75
模板存储 ........................................................................................................75
绑定 .......................................................................................................................77
模型中的事件绑定 .........................................................................................78
第6章 依赖管理 ...........................................................81
CommonJS .............................................................................................................82
模块的声明.....................................................................................................83
模块和浏览器 .................................................................................................83
模块加载器 ............................................................................................................84
Yabble ............................................................................................................84
RequireJS .......................................................................................................85
包装模块 ................................................................................................................87
模块的按需加载 .....................................................................................................88
LABjs .............................................................................................................89
无交互行为内容的闪烁(FUBC) ..........................................................................89
第7章 使用文件 ...........................................................91
浏览器支持 ............................................................................................................91
获取文件信息.........................................................................................................92
文件输入 ................................................................................................................92
拖曳 .......................................................................................................................93
拖曳 ................................................................................................................94
释放拖曳 ........................................................................................................96
撤销默认的Drag/Drop ...................................................................................97
复制和粘贴 ............................................................................................................97
复制 ................................................................................................................98
粘贴 ................................................................................................................99
读文件 .................................................................................................................. 100
二进制大文件和文件切割 ............................................................................ 101
自定义浏览器按钮 ............................................................................................... 102
上传文件 .............................................................................................................. 102
Ajax 进度条 .................................................................................................. 104
jQuery 拖曳上传 .................................................................................................. 106
创建拖曳目标区域 ....................................................................................... 106
上传文件 ...................................................................................................... 107
第8章 实时Web .........................................................109
实时Web 的发展历史 .......................................................................................... 109
WebSocket ............................................................................................................ 110
Node.js 和Socket.IO .................................................................................... 114
实时架构 .............................................................................................................. 116
感知速度 .............................................................................................................. 117
第9章 测试和调试 ......................................................119
单元测试 .............................................................................................................. 121
断言 .............................................................................................................. 121
QUnit ............................................................................................................ 122
Jasmine ......................................................................................................... 126
驱动 ..................................................................................................................... 128
无界面的测试....................................................................................................... 131
Zombie ......................................................................................................... 132
Ichabod ......................................................................................................... 134
分布式测试 .......................................................................................................... 135
提供支持 .............................................................................................................. 136
调试工具 .............................................................................................................. 136
Web Inspector ............................................................................................... 136
Firebug ......................................................................................................... 138
控制台 .................................................................................................................. 139
控制台函数................................................................................................... 140
使用JavaScript 调试器 ........................................................................................ 141
分析网络请求....................................................................................................... 143
Profile 和函数运行时间 ....................................................................................... 144
第10章 部署 ..............................................................147
性能 ..................................................................................................................... 147
缓存 ..................................................................................................................... 148
源码压缩(Minification) ..................................................................................... 150
Gzip 压缩 ............................................................................................................. 151
使用CDN ............................................................................................................. 152
审查工具 .............................................................................................................. 153
外部资源 .............................................................................................................. 154
第11章 Spine类库 .....................................................155
设置 ..................................................................................................................... 156
类 ......................................................................................................................... 156
实例化 .......................................................................................................... 156
类扩展 .......................................................................................................... 157
上下文 .......................................................................................................... 158
事件 ..................................................................................................................... 159
模型 ..................................................................................................................... 160
获取记录 ...................................................................................................... 161
模型事件 ...................................................................................................... 162
校验 .............................................................................................................. 163
持久化 .......................................................................................................... 163
控制器 .................................................................................................................. 165
代理 .............................................................................................................. 166
元素 .............................................................................................................. 167
委托事件 ...................................................................................................... 167
控制器事件................................................................................................... 168
全局事件 ...................................................................................................... 168
渲染模式 ...................................................................................................... 169
元素模式 ...................................................................................................... 169
构建联系人管理应用 ........................................................................................... 171
联系人模型................................................................................................... 172
侧边栏控制器 ............................................................................................... 173
联系人控制器 ............................................................................................... 175
应用程序控制器 ........................................................................................... 178
第12章 Backbone类库 ...............................................181
模型 ..................................................................................................................... 182
模型和属性................................................................................................... 182
集合 ..................................................................................................................... 184
控制集合的内部顺序 .................................................................................... 185
视图 ..................................................................................................................... 185
渲染视图 ...................................................................................................... 186
委托事件 ...................................................................................................... 187
绑定和上下文 ............................................................................................... 187
控制器 .................................................................................................................. 188
与服务器的同步 ................................................................................................... 190
填充集合 ...................................................................................................... 192
服务器端 ...................................................................................................... 192
自定义行为................................................................................................... 193
构建To-Do 列表应用 ........................................................................................... 195
第13章 JavaScriptMVC类库 ......................................203
设置 ..................................................................................................................... 204
Class ..................................................................................................................... 204
实例化 .......................................................................................................... 205
调用基类的方法 ........................................................................................... 205
代理 .............................................................................................................. 205
静态继承 ...................................................................................................... 206
自省 .............................................................................................................. 206
一个模型的例子 ........................................................................................... 207
模型 ..................................................................................................................... 207
属性和可观察 ............................................................................................... 208
扩展模型 ...................................................................................................... 210
Setter ............................................................................................................ 210
Defaults ........................................................................................................ 211
辅助方法 ...................................................................................................... 211
服务封装 ...................................................................................................... 212
类型转换 ...................................................................................................... 215
CRUD 事件 .................................................................................................. 216
在视图中使用客户端模板 .................................................................................... 216
基本用法 ...................................................................................................... 217
jQuery 修改器 .............................................................................................. 217
用Script 标签加载 ....................................................................................... 217
$.View 和子模板 .......................................................................................... 218
延时对象 ...................................................................................................... 218
打包、预加载和性能 .................................................................................... 219
$.Controller :jQuery 插件工厂 ............................................................................ 220
概览 .............................................................................................................. 222
控制器实例化 ............................................................................................... 222
事件绑定 ...................................................................................................... 223
模板动作 ...................................................................................................... 224
大综合:一个抽象的CRUD 列表 ........................................................................ 225
附录A jQuery基础 .....................................................227
附录B CSS扩展 .........................................................239
附录C CSS3参考 .......................................................245
索引 ...........................................................................267
· · · · · ·
作者简介
作者简介
Alex MacCaw是一名Ruby/JavaScript程序员,在开源社区中很有名望,是Spine框架的作者,开发过Taskforce,Socialmod等大型开源项目,同时活跃在纽约、旧金山和柏林的各大Ruby/Rails会议。
精彩摘录
Themistakedevelopersoftenmakeiscreatingapplicationswithalotofinterdependency,withhugelinearJavaScriptfilesgeneratingaslewofHTMLtags.
——引自第2页
Event-basedprogrammingisverypowerfulbecauseitdecouplesyourapplication’sarchitecture,leadingtobetterself-containmentandmaintainability.
——引自第27页