具体描述
《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
编写测试用例,并使用控制台工具来调试你的应用
部署应用的最佳实践,比如缓存机制和代码压缩等
作者简介
作者简介
Alex MacCaw是一名Ruby/JavaScript程序员,在开源社区中很有名望,是Spine框架的作者,开发过Taskforce,Socialmod等大型开源项目,同时活跃在纽约、旧金山和柏林的各大Ruby/Rails会议。
目录信息
第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
· · · · · · (收起)
读后感
第二章订阅和发布 publish: function () { ... // 如果不存在_callbacks 方法返回 if(!(this._calls = this._callbacks )) return this; //如果不包含事件对应的数组 if(!(this._calls = this._callbacks[ev])) return this; ... } 这个地方我觉得...
中文版11页下面的 if(parent){ var subclass =function(){}; subclass.prototype = parent.prototype; klass.prototype = new subclass(); }和 if(parent){ klass.prototype = parent.prototype; } 有和区别?!
第二章订阅和发布 publish: function () { ... // 如果不存在_callbacks 方法返回 if(!(this._calls = this._callbacks )) return this; //如果不包含事件对应的数组 if(!(this._calls = this._callbacks[ev])) return this; ... } 这个地方我觉得...
使用ASP.NET MVC开发企业招聘系统 课程观看地址:http://www.xuetuwuyou.com/course/60 课程出自学途无忧网:http://www.xuetuwuyou.com/ 课程介绍 一、课程用到的软件:Visual Studio2012,SQLServer2008 R1 二、课程涉及到的技术点 1.C#面对对象 2.文件读写与序列化 3.ADO....
用户评价
读过一些JavaScript的书籍,但往往停留在基础语法的层面。《基于MVC的JavaScript Web富应用开发》这个名字,直接点出了“富应用”和“MVC”两个关键词,这让我眼前一亮。我希望这本书不仅仅是教你如何写JavaScript,而是教你如何“开发”一个真正意义上的Web应用。MVC的架构思想,意味着它会从整体上引导读者去思考应用的结构和流程,而不是零散地学习各种API。我对书中如何讲解View和Controller之间的解耦特别感兴趣,因为在实际开发中,View和Controller的紧密耦合常常是导致代码难以维护的根源。此外,“富应用”也意味着需要强大的前端工程化能力,我期待书中能提及一些关于模块化开发、打包工具(如Webpack、Rollup)、代码质量检测等方面的实践,这些都是构建现代化Web应用必不可少的部分。
我一直对JavaScript在大型项目中的应用感到好奇,特别是如何才能写出优雅、可维护的代码。这本书的出现,感觉像是为我解开了心中的一个迷团。《基于MVC的JavaScript Web富应用开发》这个书名,就传递出一种“系统化”的开发理念。我设想书中应该会对JavaScript的面向对象编程、函数式编程等特性进行深入探讨,并将其与MVC架构巧妙结合。特别是Controller的部分,如何设计出清晰的事件处理流程,如何避免Controller变得过于臃肿,这都是我关心的重点。另外,View的渲染性能也是衡量富应用的重要标准,我希望能看到书中介绍一些现代前端框架(如果书中有涉及的话)是如何在View层实现高效渲染的,例如虚拟DOM技术、diff算法的应用等等。当然,如果书中能够涵盖一些状态管理方案,比如Redux或者Vuex的思想,那就更完美了,毕竟在复杂的富应用中,统一且可预测的状态管理至关重要。
说实话,JavaScript的生态系统发展太快了,常常让人应接不暇。《基于MVC的JavaScript Web富应用开发》这个标题,让我看到了希望——一种系统性的、基于成熟架构模式的开发方法。我特别希望能从书中学习到如何将MVC这套经典的软件设计模式,灵活地应用到JavaScript的开发中。比如,Model的部分,除了简单的数据存储,是否会涉及数据验证、数据持久化、甚至与后端API的交互逻辑?View的部分,如何实现高效的DOM更新,如何处理用户输入,如何进行响应式设计?Controller的部分,又如何更好地管理应用的生命周期,如何处理不同路由下的业务逻辑?我更希望书中能提供一些关于性能优化的建议,例如如何减少HTTP请求,如何优化JavaScript的执行效率,如何实现代码的懒加载等,这些都是构建流畅富应用的基石。
我一直认为,要写出优秀的Web应用,光懂JavaScript语法是不够的,还需要掌握一套行之有效的开发模式。《基于MVC的JavaScript Web富应用开发》这个书名,就给我一种“这是要讲究方法论”的感觉。我希望书中能够深入浅出地讲解MVC的每一个环节,例如,Model如何封装业务逻辑和数据,View如何清晰地描绘用户界面并响应用户操作,以及Controller如何作为中间人,协调Model和View的工作。我特别关心Controller的设计,因为它往往是应用的核心驱动力。书中是否会介绍一些常见的Controller模式,比如事件代理、命令模式等?同时,“富应用”也暗示着需要一些更高级的技术,我希望书中能涵盖一些关于异步编程、状态管理、组件化开发等主题,这些都是构建复杂、交互性强的Web应用的关键。
这本《基于MVC的JavaScript Web富应用开发》虽然我还没来得及深入研读,但仅从目录和前言就能感受到作者的用心良苦。首先,书名就直指了当前Web开发的核心技术栈——JavaScript,并且强调了“富应用”这一概念,这正是当下用户体验至上的时代所迫切需要的。MVC(Model-View-Controller)架构模式的应用,预示着这本书将带领读者构建结构清晰、可维护性强、易于扩展的应用程序,而不是零散的脚本堆砌。我特别期待书中能够详细讲解如何运用JavaScript实现MVC模式,例如,Model部分如何管理数据状态,View部分如何高效地渲染视图并响应用户交互,以及Controller部分如何协调Model和View,处理业务逻辑。而且,“富应用”意味着书中应该会涉及异步请求、数据绑定、DOM操作的优化、组件化开发等内容,这些都是构建复杂、交互性强的Web应用不可或缺的技术。我希望书中能提供一些实际案例,通过代码演示来加深理解,而不是枯燥的理论阐述。毕竟,理论结合实践才能真正掌握一门技术。
框架没仔细看
这书写的不太好 作者不太会写书 乱七八糟 什么东西都一股脑放上来 内容写的也不太吸引人 各种大段大段代码
Web Applications入门
虽然书很薄,比我想象的要薄多了。但里面提到的都是干货! 可以提醒自己review很多东西。
站在书店翻翻就行了。