狼书(卷3):Node.js高级技术
链接:https://pan.baidu.com/s/1nAQQ7QVJpWF_nknVC7Z6kA?pwd=nngh
提取码:nngh

内容简介
Node.js开发简单,性能极好,一经发布便成了明星级项目。随着大前端领域的蓬勃发展,跨平台开发、API构建、Web应用开发等场景愈加常见,Node.js也成为大前端开发的推荐“利器”。
本书聚焦于Node.js高级技术。第1章介绍如何编写npm模块,其中涉及对许多常用模块的解析。第2章介绍如何编写企业级Web开发框架,主要剖析了开发框架的流程。第3章介绍如何构建具有Node.js特色的服务,着重讲解了页面即服务的概念。第4章介绍服务器部署与性能调优的相关知识。第5章介绍TDD和BDD理念,以及如何编写测试用例,同时分享了笔者关于开源和自学的看法。
基于Node.js不断进阶,实现高级应用开发是符合技术趋势的,也是全栈工程师必须掌握的技能。因此,各位大前端领域及后端领域的测试、运维、软件开发从业者都适合阅读本书。
作者简介
桑世龙,狼叔(网名i5ting),现为阿里巴巴前端技术专家,去哪儿网前前端架构师,Node.js 技术布道者,领域头部公众号“Node全栈”运营者。曾就职于多家知名IT企业,从事前端开发、后端开发、数据分析等工作,目前负责公司内的Node.js开发和基础框架开发工作。
精彩书评
Node.js是为数不多的中国程序员不是跟从者而是开创者的技术领域。中国程序员在Node.js的布道方面贡献了很多,从推广Node.js社区到组织各种会议,当然也包括出版图书。对所有优秀的程序员来说,写书都是一件辛苦的事,所以愿意在这方面投入精力的程序员基本上都是有情怀的。狼叔花了多年时间写成了这本书,其中既包含Node.js进阶知识,也包含宝贵的工程实践,为所有从业者提供了参考,期待狼叔能够一直写下去。
——极客时间《重学前端》专栏作者,程邵非(winter)
多年前曾和狼叔聊过一个颇为枯燥的技术问题,当时他把那个问题解释得非常精彩,让我印象颇深。所以得知狼叔在写书时,我充满了期待。一方面,我相信狼叔一定能把严肃的技术问题讲得通俗易懂;另一方面,要想将Node.js生态讲得透彻,狼叔是优秀人选。
——ioredis作者、《Redis入门指南》作者,李子骅(luin)
《狼书》系列图书不是简单的Node.js使用手册,而是纵观Node.js发展历史、带你领略Node.js底层风采,并且能对你的Node.js知识体系进行查漏补缺的好书。在如今各式各样的Node.js图书中,这样的好书真的非常难得。
——《Node.js:来一打C++扩展》作者,死月
狼叔是国内比较知名的Node.js技术布道者,为Node.js在中国的发展做出了巨大的贡献。本书中既有对Node.js高阶开发技巧的详细介绍,也有对狼叔多年宝贵经验的深度总结,非常值得大家阅读、学习,建议各位持卷品读。
——ThinkJS框架作者,李成银
本书从多个使用场景深度探究了Node.js高阶技术。在Node.js发展迅猛、各种新生框架如雨后春笋般涌现之时,我们十分需要这样一本书。书中凝聚了狼叔在Node.js领域深耕多年的经验。通读全书后,相信读者一定能体会到Node.js高阶开发的精髓。
——TypeScript布道者、Midway框架作者,陈仲寅(张挺)
继《狼书》系列第1卷和第2卷之后,《狼书(卷3):Node.js高级技术》终于和大家见面了。这本书凝聚了狼叔多年以来的技术心血,也填补了目前市面上没有一套大而全的“Node.js红宝书”的缺憾,值得每一位Node.js开发者阅读。
——《Node.js调试指南》作者,赵坤(nswbmw)
这本书涵盖了Node.js高阶开发技巧,读者可以通过这本书了解如何开发npm模块,如何编写企业级Web框架,如何进行服务器部署和性能调优等相关内容,并将Node.js的精髓融会贯通。在这本书中,狼叔将带你进入更宽广的Node.js世界,照亮你的Node.js学习道路!
——GMTC(全球大前端技术大会)前主编,孟夕
这本书是狼叔花了多年时间打造的,书中融入了他丰富的开发经验和实践技巧,可以指导你深入研究Node.js,探索其中的奥秘,助你成为JavaScript全栈工程师。无论你是刚开启前端之旅的“小白”,还是有经验的高级工程师,都能从本书中获得经验和启发。
——《前端架构:从入门到微前端》作者,黄峰达(Phodal)
《狼书(卷3):Node.js高级技术》来了,让我们通过这本书跟狼叔一起“进化”吧!我们能从这本书中获得完善的Node.js高阶应用开发技巧,让自己真正“刚”起来!
——Trek.js作者,fundon
狼叔亲历了Node.js在国内的兴起、发展和成熟,他将眼中的Node.js核心知识完整融入本书。本书深入浅出地介绍了Node.js高级应用开发技巧,非常适合各个阶段的前后端工程师阅读、学习,从而构建出更了不起的Node.js应用。
——新浪移动前端技术专家、Daruk框架作者,付强(小爝)
作为同时在两地推动 NodeParty线下聚会的同仁和网友,我时常被狼叔对社区投入的热情所感染。狼叔的技术能力和技术视野是毋庸置疑的。现在看到狼叔在教育领域又有进步,我不禁感慨,希望大家不负狼叔多年的付出,从书中吸取精华内容,快速成长,成为社区建设的中坚力量,一起推动Node.js的未来发展!
——NodeParty开源基金会发起人、大搜车无线团队负责人,芋头
2015年10月,我便知道狼叔在筹备一本关于Node.js的书,不禁满心期待。虽然等待了多年,但看到《狼书》系列相继面世,我依然惊喜。《狼书》中汇集了许多Node.js发展历程中的精彩故事,还涵盖了很多Node.js的核心技术观点,相信对于读者而言定是一场知识盛宴!
——前端早早聊大会创始人,Scott
Node.js是我最喜欢的技术之一,因为它给JavaScript带来了无限可能。本书着重讲解了Node.js高级技术,能够带领你了解更全面、更了不起的Node.js进阶知识。如果你想提升自己的JavaScript编程能力,就从《狼书》系列开始吧!
——iView作者,梁灏
狼叔是国内知名的Node.js技术布道者和推广先驱,他将Node.js技术的精华提取出来并完全融入本书。这本书深入浅出,不仅解释了Node.js的高阶技术细节,而且教会你学习的方法,同时结合作者多年的实践心得和宝贵经验,可以让读者少走弯路,是一本真正的开发者之书。
——思否开发者社区CTO,祁宁
我曾与狼叔探讨过关于“业界对Node.js存在争议”的问题,当时狼叔展现出的那种破除前后端开发分工隔阂的大局观,以及以业务需求为导向去解决实际问题的思维方式,让我十分佩服。这本书是狼叔的心血结晶,相信大家都能从中获得技术提升,扩展自己的视野。
——谷歌开发者社区天津核心组织者,朱峰
学习Node.js技术,入门容易精通难。要想有所突破,需要花费大量的精力钻研,要经过大量实战的锤炼。在这个过程中,如果能有师傅言传身教,则会事半功倍。《狼书》正是能帮你快速得道的“师傅”,本书汇集了作者多年的经验,系统总结了Node.js项目中各种问题的高级解决技巧,是值得人手一本的书。
——《现代JavaScript库开发:原理、技术与实战》作者,颜海镜
坦白说我还没有看到本书全貌,但单看目录,我就已翘首盼成书。这本书显然更注重实践,重视Node.js技术的综合运用。我认为相比那些可以从社区中获取的纯理论知识,本书内容更加实用,实在难能可贵。期待你与我一起学习、品读。
——《前端架构师:基础建设与架构设计思想》作者,侯策
目录
第1章 自己动手写npm模块 1
1.1 基础技能 1
1.1.1 环境变量 2
1.1.2 Zsh 2
1.1.3 Vim 3
1.1.4 Ack 4
1.1.5 Autojump 5
1.1.6 Git和GitHub 5
1.1.7 查询文档 6
1.2 编写Node.js模块 6
1.2.1 初始化模块 6
1.2.2 普通模块 7
1.2.3 二进制模块 9
1.3 npm技巧 13
1.3.1 npm run 13
1.3.2 配置 13
1.3.3 钩子 15
1.3.4 npm link 16
1.3.5 自定义安装 16
1.3.6 模块瘦身 17
1.3.7 postinstall 17
1.3.8 路径 18
1.3.9 模块依赖图 20
1.4 实例讲解 22
1.4.1 kp 22
1.4.2 je 27
1.4.3 lazyclone 30
1.5 编写脚手架 31
1.5.1 初始化模块 32
1.5.2 CLI二进制模块 32
1.5.3 使用模板引擎 34
1.5.4 解析CLI参数和路径 35
1.5.5 npm发布 40
1.6 开源周边 40
1.6.1 持续集成 40
1.6.2 测试覆盖率 45
1.6.3 徽章 45
1.6.4 反向学习 46
1.7 推荐模块 46
1.7.1 debug 47
1.7.2 GitBook 48
1.7.3 colors和chalk 49
1.7.4 mkdirp 50
1.7.5 shelljs 50
1.7.6 moment 51
1.7.7 LRU缓存 52
1.7.8 semver 53
1.7.9 xtend 55
1.7.10 require-directory 56
1.7.11 yargs 57
1.8 本章小结 59
第2章 自己动手编写企业级Web开发框架 60
2.1 特色Web框架 60
2.1.1 LoopBack 61
2.1.2 Nest 63
2.1.3 ThinkJS 66
2.1.4 Egg.js 69
2.1.5 Next.js 70
2.1.6 Redwood 72
2.1.7 strapi 76
2.2 自己动手写框架 78
2.2.1 基础知识 78
2.2.2 生成项目 81
2.2.3 添加Mongoose 91
2.2.4 添加MVC目录 96
2.2.5 庖丁解Views 103
2.2.6 脚手架 112
2.2.7 静态API模拟 114
2.2.8 更多实践 122
2.3 本章小结 127
第3章 构建具有Node.js特色的服务 128
3.1 服务概览 128
3.1.1 架构演变 128
3.1.2 从大而全到小而美 129
3.1.3 微服务应用 131
3.1.4 BFF中间层 134
3.1.5 SFF托管 137
3.2 使用Node.js优化页面渲染 140
3.2.1 BigPipe 140
3.2.2 服务器端渲染(SSR) 150
3.2.3 渐进式Web应用(PWA) 153
3.2.4 同构开发 158
3.3 页面即服务 162
3.3.1 页面独立 162
3.3.2 模块拆分 164
3.3.3 BigView 165
3.3.4 API Proxy 175
3.3.5 源码说明 176
3.4 使用Node.js开发RPC服务 178
3.4.1 RPC原理 178
3.4.2 通信层协议设计 179
3.4.3 如何实现RPC通信协议 180
3.4.4 DNode 181
3.4.5 Senaca 182
3.4.6 Moleculer 185
3.4.7 通用RPC 189
3.4.8 服务发现与治理 190
3.4.9 典型用法 192
3.5 使用Node.js开发独立的API层 193
3.5.1 GraphQL 193
3.5.2 Micro框架 197
3.5.3 API网关 197
3.5.4 在线服务 199
3.6 本章小结 199
第4章 服务器部署与性能调优 200
4.1 服务器部署 200
4.1.1 服务器选购 201
4.1.2 手动部署 204
4.1.3 通过Docker部署 211
4.1.4 自动部署 224
4.1.5 APM与监控 231
4.2 性能调优 239
4.2.1 基础知识 239
4.2.2 立体分析 246
4.2.3 深度性能调优 250
4.3 分析Easy-monitor 260
4.4 本章小结 262
第5章 测试、开源与自学 263
5.1 测试入门 264
5.1.1 什么是测试 264
5.1.2 TDD和BDD 265
5.1.3 最小化问题 268
5.1.4 Baretest 269
5.1.5 TAP和Tape 271
5.1.6 Mocha 274
5.1.7 Jest 278
5.2 测试进阶 283
5.2.1 测试的好处 283
5.2.2 红到绿工作流 284
5.2.3 Cucumber 285
5.2.4 Spy、Stub和Mock 288
5.2.5 持续集成 291
5.2.6 如何编写测试框架 292
5.2.7 如何打造开源项目 293
5.2.8 进一步学习TypeScript 294
5.3 开源带来的机会和思考 310
5.3.1 Clipanion 310
5.3.2 机会与挑战 312
5.3.3 敏感且会学 313
5.3.4 成就更好的自己 313
5.4 本章小结 314
查看全部↓

