基于MVC的JavaScript Web富应用开发

本网站不提供下载链接,喜欢看书的朋友请关注公众号:【lennylee的碎碎念】(lennyleede),首页回复:授人以渔,自动获取搜索资源的方法。

内容简介:

《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
· · · · · · (收起)

原文摘录: