具体描述
本书是面向一线开发人员的一本实用教程,对最新的Web开发技术与程序进行了全面的梳理和总结,为JavaScript开发人员提供了改进Web开发质量和开发流程的最新技术。本书主要分两大块,首先是以构建为目标实现JavaScript驱动开发,其次介绍如何管理应用设计过程中的复杂度,包括模块化、MVC、异步代码流、测试以及API设计原则。
作者简介
Nicolas Bevacqua
JavaScript开源社区的活跃成员,自由Web开发者,关注模块化JavaScript、构建过程和新锐设计理念,偶尔进行公开演讲,还是一名充满激情的作家。他维护着多个开源项目,还开设了一个博客,发表关于Web、性能、渐进增强和JavaScript开发相关的文章,地址是ponyfoo.com。Nico现在和他的女友玛丽安一起生活在阿根廷布宜诺斯艾利斯。
目录信息
第1章 构建优先 2
1.1 问题出现了 2
1.1.1 45分钟内每秒损失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 介绍Grunt 20
2.1.1 安装Grunt 21
2.1.2 设置第一个Grunt任务 23
2.1.3 使用Grunt管理构建过程 24
2.2 预处理和静态资源优化 26
2.2.1 详述预处理 26
2.2.2 处理LESS 28
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 内嵌对首屏至关重要的CSS 64
4.1.4 部署前要测试 65
4.2 预部署操作 65
4.2.1 语义化版本 66
4.2.2 使用更改日志 67
4.2.3 提升版本号时提交更改日志 67
4.3 部署到Heroku 68
4.3.1 在Heroku的服务器中构建 70
4.3.2 管理多个环境 71
4.4 持续集成 71
4.4.1 使用Travis托管的CI 72
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.2 JavaScript模块 92
5.2.1 闭包和模块模式 92
5.2.2 原型的模块化 93
5.2.3 CommonJS模块 94
5.3 管理依赖 95
5.3.1 依赖图 95
5.3.2 介绍RequireJS 98
5.3.3 Browserify:在浏览器中使用CJS 模块 100
5.3.4 Angular管理依赖的方式 100
5.4 理解包管理 102
5.4.1 Bower 简介 103
5.4.2 大型库,小组件 104
5.4.3 选择合适的模块系统 105
5.4.4 学习循环依赖 105
5.5 ECMAScript 6新功能简介 106
5.5.1 在Grunt任务中使用Traceur 107
5.5.2 Harmony中的模块 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.1 Promise对象基础知识 127
6.3.2 链接Promise对象 130
6.3.3 控制流程 132
6.3.4 处理被拒绝的Promise对象 133
6.4 理解事件 134
6.4.1 事件和DOM 134
6.4.2 自己实现事件发射器 135
6.5 展望:ES6生成器 138
6.5.1 创建第一个生成器 138
6.5.2 生成器的异步性 140
6.6 总结 141
第7章 使用模型-视图-控制器模式 142
7.1 jQuery力不胜任 142
7.2 在JavaScript中使用MVC模式 145
7.2.1 为什么使用Backbone 146
7.2.2 安装Backbone 147
7.2.3 使用Grunt和Browserify编译Backbone模块 147
7.3 介绍Backbone 148
7.3.1 Backbone视图 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.5 Backbone和Rendr:服务器和客户端共享渲染 172
7.5.1 Rendr简介 172
7.5.2 理解Rendr 的样板代码 174
7.5.3 一个简单的Rendr应用 176
7.6 总结 182
第8章 测试JavaScript组件 184
8.1 JavaScript测试速成课 185
8.1.1 隔离逻辑单元 185
8.1.2 使用TAP 186
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.js 195
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章 REST API设计和分层服务架构 222
9.1 规避API设计误区 222
9.2 学习REST API设计 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 在客户端使用REST API 235
9.4.1 请求处理层 236
9.4.2 中止旧请求 236
9.4.3 使用一致的方式处理AJAX错误 237
9.5 总结 238
附录A Node.js的模块 240
附录B 介绍Grunt 242
附录C 选择合适的构建工具 249
附录D JavaScript代码质量指南 257
· · · · · · (收起)
读后感
JavaScript has never been as popular as it is now, especially after it’s used in backend development. As the complicity of current web system grows, it has higher technical requirements for both development process and technique. Agile practices like scrum...
JavaScript has never been as popular as it is now, especially after it’s used in backend development. As the complicity of current web system grows, it has higher technical requirements for both development process and technique. Agile practices like scrum...
JavaScript has never been as popular as it is now, especially after it’s used in backend development. As the complicity of current web system grows, it has higher technical requirements for both development process and technique. Agile practices like scrum...
JavaScript has never been as popular as it is now, especially after it’s used in backend development. As the complicity of current web system grows, it has higher technical requirements for both development process and technique. Agile practices like scrum...
JavaScript has never been as popular as it is now, especially after it’s used in backend development. As the complicity of current web system grows, it has higher technical requirements for both development process and technique. Agile practices like scrum...
用户评价
本书在实际开发流程的指导上也给了我很大的启发。从前端工程化的角度,书中详细介绍了如何使用Webpack等工具进行模块打包、代码压缩、资源优化等,这对于提升应用的性能和用户体验至关重要。我还学到了如何进行单元测试和集成测试,如何构建CI/CD流水线,这些都是现代软件开发不可或缺的实践。作者在书中提供的实践案例,从一个简单的待办事项列表到一个复杂的数据可视化仪表盘,都涵盖了从需求分析到最终部署的整个过程,让我对Web应用的开发流程有了更全面的认识。
此外,这本书还深入探讨了用户体验和性能优化的相关话题。在用户体验方面,书中讲解了如何利用JavaScript实现流畅的动画效果,如何进行异步加载数据以提升页面响应速度,以及如何设计响应式布局以适应不同设备。在性能优化方面,我学到了很多实用的技巧,比如如何减少HTTP请求、如何利用缓存、如何进行代码分割等。这些知识对于提升Web应用的加载速度和运行效率非常有帮助,也直接关系到用户满意度。我感觉这本书不仅仅是教我“怎么做”,更是教我“为什么这么做”,让我从根本上理解了优化的重要性。
总而言之,《JavaScript Web应用开发》是一本非常优秀的图书,它系统地讲解了JavaScript Web应用开发所需的各项知识和技能。无论你是初学者还是有一定经验的开发者,都能从中获得宝贵的知识和启发。书中丰富的实践案例和深入的理论分析,让我对JavaScript Web应用的开发有了更深刻的理解。我强烈推荐这本书给所有想要提升JavaScript Web应用开发能力的朋友们,相信你们也会和我一样,在这本书中找到属于自己的宝藏。
除了JavaScript语言本身,这本书还重点讲解了如何利用JavaScript构建完整的Web应用。它并没有局限于某个特定的框架,而是从通用的Web开发原理出发,介绍了如何进行项目结构的设计、模块化开发、组件化开发等。我尤其喜欢书中关于“组件化开发”的部分,作者详细阐述了如何拆分UI,如何管理组件间的通信,以及如何复用组件。这对于我之前开发大型项目时遇到的代码冗余、维护困难等问题,提供了非常有效的解决方案。书中还穿插讲解了一些常用的设计模式,比如发布-订阅模式、单例模式等,这些模式的运用让我的代码更加健壮、易于扩展。
我是一名热爱前端开发的程序员,一直以来都致力于提升自己的技能,希望能写出更优秀、更具吸引力的Web应用。最近,我偶然发现了一本名为《JavaScript Web应用开发》的书籍,据说在行业内评价很高,所以迫不及待地入手了。读完后,我发现这本书简直是一场技术盛宴,让我受益匪浅。 首先,这本书对JavaScript语言本身进行了深入浅出的讲解,从基础语法到高级特性,都梳理得非常清晰。我之前对一些JavaScript的闭包、原型链等概念一直有些模糊,读完相关章节后,我感觉豁然开朗。作者用大量的实际例子来演示这些概念,而不是干巴巴地罗列理论,这使得学习过程更加生动有趣。而且,书中还特别强调了ES6+的新特性,比如箭头函数、解构赋值、Promise、Async/await等,这些都是现代JavaScript开发中不可或缺的部分。通过学习这些新特性,我能够写出更简洁、更高效的代码,也为我后续学习更复杂的框架打下了坚实的基础。
难得看到有关项目构建、workflow、开发管理的书,虽然已经转向gulp,还是顺便复习了一遍grunt
一些工程相关的内容,书名容易让人觉得类似于单页web那本书,其实并不是。这种平时只能靠碎片化学习得来的知识,有人整理成书也是再好不过的,只是内容比较容易过时。
一些工程相关的内容,书名容易让人觉得类似于单页web那本书,其实并不是。这种平时只能靠碎片化学习得来的知识,有人整理成书也是再好不过的,只是内容比较容易过时。
难得看到有关项目构建、workflow、开发管理的书,虽然已经转向gulp,还是顺便复习了一遍grunt
一些工程相关的内容,书名容易让人觉得类似于单页web那本书,其实并不是。这种平时只能靠碎片化学习得来的知识,有人整理成书也是再好不过的,只是内容比较容易过时。