内容简介
本书是面向一线开发人员的实用教程,全面梳理和总结了最新的Web开发技术和程序,为JavaScript开发人员提供了提高Web开发质量和流程的最新技术。这本书主要分为两部分首先,它旨在构建JavaScript驱动的开发其次,介绍了如何管理应用程序设计的复杂性,包括模块化、MVC、异步代码流、并测试API设计原则。
目录
- 第一部分构建过程
- 第1章构建优先2
- 1.1问题出现了2
- 1.1.145分钟内每秒损失17万美元3
- 1.1.2构建优先3
- 1.1.3繁琐的前戏4
- 1.2遵守构建优先原则,提前计划5
- 1.3构建过程7
- 1.4处理应用的复杂度和设计理念8
- 1.5钻研构建优先原则12
- 1.5.1检查代码质量12
- 1.5.2在命令行中使用lint工具15
- 1.6总结18
- 第2章编写构建任务,制定流程19
- 2.1介绍Grunt20
- 2.1.1安装Grunt21
- 2.1.2设置第一个Grunt任务23
- 2.1.3使用Grunt管理构建过程24
- 2.2预处理和静态资源优化26
- 2.2.1详述预处理26
- 2.2.2处理LESS28
- 2.2.3打包静态资源31
- 2.2.4简化静态资源32
- 2.2.5创建子图集34
- 2.3检查代码完整性36
- 2.3.1清理工作目录36
- 2.3.2使用lint程序检查代码37
- 2.3.3自动运行单元测试38
- 2.4首次自己编写构建任务38
- 2.5案例分析:数据库任务39
- 2.6总结41
- 第3章精通环境配置和开发流程42
- 3.1应用的环境42
- 3.1.1配置构建模式43
- 3.1.2环境层面的配置47
- 3.1.3开发环境有什么特别之处48
- 3.2配置环境48
- 3.2.1瀑布式存储配置的方法49
- 3.2.2通过加密增强环境配置的安全性50
- 3.2.3使用系统级方式设置环境层面的配置52
- 3.2.4在代码中使用瀑布式方法合并配置53
- 3.3自动执行繁琐的首次设置任务54
- 3.4在持续开发环境中工作54
- 3.4.1监视变动,争分夺秒55
- 3.4.2监视Node应用的变动56
- 3.4.3选择一款合适的文本编辑器57
- 3.4.4手动刷新浏览器已经过时了58
- 3.5总结58
- 第4章发布、部署和监控59
- 4.1发布应用60
- 4.1.1优化图像60
- 4.1.2缓存静态资源62
- 4.1.3内嵌对首屏至关重要的CSS64
- 4.1.4部署前要测试65
- 4.2预部署操作65
- 4.2.1语义化版本66
- 4.2.2使用更改日志67
- 4.2.3提升版本号时提交更改日志67
- 4.3部署到Heroku68
- 4.3.1在Heroku的服务器中构建70
- 4.3.2管理多个环境71
- 4.4持续集成71
- 4.4.1使用Travis托管的CI72
- 4.4.2持续部署73
- 4.5监控和诊断74
- 4.5.1日志和通知74
- 4.5.2调试Node应用76
- 4.5.3分析性能78
- 4.5.4运行时间和进程管理78
- 4.6总结79
- 第二部分管理复杂度
- 第5章理解模块化和依赖管理82
- 5.1封装代码83
- 5.1.1理解单一职责原则84
- 5.1.2信息隐藏和接口86
- 5.1.3作用域和this关键字87
- 5.1.4严格模式90
- 5.1.5提升变量的作用域91
- 5.2JavaScript模块92
- 5.2.1闭包和模块模式92
- 5.2.2原型的模块化93
- 5.2.3CommonJS模块94
- 5.3管理依赖95
- 5.3.1依赖图95
- 5.3.2介绍RequireJS98
- 5.3.3Browserify:在浏览器中使用CJS模块100
- 5.3.4Angular管理依赖的方式100
- 5.4理解包管理102
- 5.4.1Bower简介103
- 5.4.2大型库,小组件104
- 5.4.3选择合适的模块系统105
- 5.4.4学习循环依赖105
- 5.5ECMAScript6新功能简介106
- 5.5.1在Grunt任务中使用Traceur107
- 5.5.2Harmony中的模块107
- 5.5.3创建块级作用域的let关键字108
- 5.6总结109
- 第6章理解JavaScript中的异步流程控制方法110
- 6.1使用回调110
- 6.1.1跳出回调之坑111
- 6.1.2解开混乱的回调112
- 6.1.3嵌套请求114
- 6.1.4处理异步流程中的错误116
- 6.2使用async库119
- 6.2.1使用瀑布式、串行还是并行119
- 6.2.2异步函数式任务123
- 6.2.3异步任务队列124
- 6.2.4制定流程和动态流程125
- 6.3使用Promise对象127
- 6.3.1Promise对象基础知识127
- 6.3.2链接Promise对象130
- 6.3.3控制流程132
- 6.3.4处理被拒绝的Promise对象133
- 6.4理解事件134
- 6.4.1事件和DOM134
- 6.4.2自己实现事件发射器135
- 6.5展望:ES6生成器138
- 6.5.1创建第一个生成器138
- 6.5.2生成器的异步性140
- 6.6总结141
- 第7章使用模型-视图-控制器模式142
- 7.1jQuery力不胜任142
- 7.2在JavaScript中使用MVC模式145
- 7.2.1为什么使用Backbone146
- 7.2.2安装Backbone147
- 7.2.3使用Grunt和Browserify编译Backbone模块147
- 7.3介绍Backbone148
- 7.3.1Backbone视图149
- 7.3.2创建Backbone模型152
- 7.3.3使用Backbone集合组织模型154
- 7.3.4添加Backbone路由器155
- 7.4案例分析:购物清单157
- 7.4.1从静态购物清单开始157
- 7.4.2添加删除按钮159
- 7.4.3把物品添加到购物车中161
- 7.4.4实现行内编辑164
- 7.4.5服务层和视图路由170
- 7.5Backbone和Rendr:服务器和客户端共享渲染172
- 7.5.1Rendr简介172
- 7.5.2理解Rendr的样板代码174
- 7.5.3一个简单的Rendr应用176
- 7.6总结182
- 第8章测试JavaScript组件184
- 8.1JavaScript测试速成课185
- 8.1.1隔离逻辑单元185
- 8.1.2使用TAP186
- 8.1.3编写第一个单元测试186
- 8.1.4在浏览器中运行使用Tape编写的测试187
- 8.1.5筹备、行动和断言188
- 8.1.6单元测试188
- 8.1.7便利性优于约定189
- 8.1.8案例分析:为事件发射器编写单元测试189
- 8.1.9测试事件发射器190
- 8.1.10测试.on方法192
- 8.1.11驭件、侦件和代理193
- 8.1.12模拟194
- 8.1.13介绍Sinon.js195
- 8.1.14监视函数的调用情况195
- 8.1.15代理require调用196
- 8.2在浏览器中测试198
- 8.2.1伪造XHR请求和服务器响应198
- 8.2.2案例分析:测试DOM交互200
- 8.3案例分析:为使用MVC模式开发的购物清单编写单元测试209
- 8.3.1测试视图路由器209
- 8.3.2测试视图模型的验证214
- 8.4自动运行Tape测试216
- 8.4.1自动运行浏览器中的Tape测试217
- 8.4.2持续测试218
- 8.5集成测试、外观测试和性能测试218
- 8.5.1集成测试219
- 8.5.2外观测试219
- 8.5.3性能测试220
- 8.6总结221
- 第9章RESTAPI设计和分层服务架构222
- 9.1规避API设计误区222
- 9.2学习RESTAPI设计223
- 9.2.1端点、HTTP方法和版本224
- 9.2.2请求、响应和状态码227
- 9.2.3分页、缓存和限流229
- 9.2.4为API编写文档231
- 9.3实现分层服务架构232
- 9.3.1路由层233
- 9.3.2服务层233
- 9.3.3数据层234
- 9.3.4路由层234
- 9.3.5服务层234
- 9.3.6数据层235
- 9.4在客户端使用RESTAPI235
- 9.4.1请求处理层236
- 9.4.2中止旧请求236
- 9.4.3使用一致的方式处理AJAX错误237
- 9.5总结238
- 附录ANode.js的模块240
- 附录B介绍Grunt242
- 附录C选择合适的构建工具249
- 附录DJavaScript代码质量指南257
朋友问我JavaScript有什么好读的,这本书对我而言,更多的是一种温故而知新,作用域、this、ES6、模块化、异步、Promise、MVC等等,每一个点展开来讲,都有很多有趣的内容,虽然MVVM比MVC更流行,可是看多了就会发现,用jQuery操作DOM是件多么愚蠢的事情……
一些工程相关的内容,书名容易让人觉得类似于单页web那本书,其实并不是。这种平时只能靠碎片化学习得来的知识,有人整理成书也是再好不过的,只是内容比较容易过时。