商品详情
书名:Efficient Node.js实战
书号:978-7-5239-1124-2
定价:88元
作者:[美]萨默·布纳(Samer Buna) 著 李宝珅 译
出版时间:2026-04-29
出版社:中国电力出版社
页码: 292 字数(千字):286
开本:特16开 版次:1 印次:1
品牌介绍
中国电力出版社成立于 1951 年,作为中国成立最早的中央科技出版社之一,曾隶属于水利电力部、能源部、电力工业部、国家电力公司,现为国家电网公司所属的科技出版社,在电气技术专业出版领域享有极高的声誉。该社作为以图书出版为主体,音像、电子出版物、期刊、网络出版共同发展的大型出版企业,以强大的出版资源和高素质的专业队伍,致力于向读者提供包括电力工程、电气工程、建筑工程、电子技术、信息技术、外语、大中专教材、家教等学科门类齐全的权威出版物,也竭力为广大师生提供精品教材,是教育部和北京市教委规划教材的出版基地之一。
编辑推荐
专家推荐 “这本书给初学Node.js的人指出了一条清晰的路径,让大家能够迅速掌握Node.js的基础知识。有一定经验的开发者也能够从书中获得启发,以填补自己的知识空白,并对熟悉的概念产生新的认识。强烈推荐这本书。” ——Sujith Neelakandan,@sujithvn “这本书确实抓住了Node.js的核心要义。作者用贴切的比喻和清晰的总结,带领大家流畅而专注地学习Node.js。” ——Hazem Twair,全栈软件工程师 编辑推荐 Node.js让你能够将自己的Web开发技术,从浏览器端扩展到服务器端,这是一种流行的后端平台,有一千多万人在使用,其中不乏Amazon、Netflix与LinkedIn等公司的开发者。要是你对JavaScript本身感觉还不错,那可以跟着Samer Buna所写的这本实用指南,去学习如何高效地构建并维护复杂的Node.js应用程序。 这本书采用贴近实际项目的方式,讲解Node.js中的基本知识与高级技巧,涵盖模块、软件包、事件驱动架构、数据流、子进程,以及应用程序的扩展、测试、部署等方面,作者讲的都是对实际开发有用的内容。
作者介绍
Samer Buna在软件开发、API 设计、数据库管理与应用程序扩展等领域有超过二十年的经验。他写了许多与JavaScript、Node.js、React,以及其他各种话题有关的技术书籍与在线教程。
内容介绍
本书的主要内容有:帮助你在理解Node.js自身功能的基础上,充分利用整个生态环境中的各种程序库与工具。让你学会使用Node.js的模块与包。带领你研究Node.js的事件驱动架构、数据流,以及子进程。告诉你如何建立、测试并维护高效且可扩展的Node.js应用程序。
本书适用于Node.js初学者,适合那些想要从前端延伸至后端的开发者。
前言
前言
我从Node.js 诞生之初就开始使用这种技术了,它一直没让我失望。每次用Node 写完代码,我对它的好感都会增加。使用Node 开发出的每一项新功能,都会让我觉得自己的效率又提升了一些。
Node.js 从来不缺乏创新,它是个功能强大的优秀平台。只要你掌握了基础知识与异步处理方式,剩下的东西就相当简单了。你很快就能提升自己的Node.js开发水平,而且能够以令自己惊讶的效率构建出大规模的后端服务。
目标读者
这本书想要帮助你迅速学会Node.js。我们当然会深入讲解JavaScript 语言中的一些概念,但我还是希望你对JavaScript 语言先有一些简单的了解,这样才能充分发挥这本书的价值。
如果你还不熟悉JavaScript 语言中的对象、函数、运算符、迭代器等概念,那就先阅读一本JavaScript 的入门书,然后再来看这本书。
我刚开始学Node.js 的时候,想要看的正是类似现在这样一本书,但我那时主要关注的是前端。这本书当然也很适合那些想要从前端延伸至后端的开发者。
写作缘起
说起Node.js,有许多教材、书籍与课程,都把重点放在了Node.js 生态系统中的程序库与工具上,而没有强调Node.js 这套运行环境本身。它们更喜欢讲如何使用各种Node.js 库及框架,而不是从Node.js 自身的能力讲起。
这种教学方式其实是可以理解的,因为Node.js 是一套底层运行环境。它并不提供全面的解决方案,它所提供的,只是一系列关键的小模块,让开发者可以由此出发,自行构建出高效的解决方案。比方说,你想开发一款全能的Web 服务器程序,同时又要求这款程序可以向客户端呈现诸如图片、CSS 文件等静态资源。那么,针对向客户端提供二进制数据这种必备的功能,你可以利用Node.js 内置的http 模块来实现,而为了给刚才说的那个提供静态文件的功能做准备,又可以利用Node.js 内置的另一个模块,也就是fs 模块来实现,它能够从文件系统中读取某个文件的内容。你通过自己的JavaScript代码,将这两个模块结合起来,就可以构建出能够向客户端提供静态文件的服务器程序了。由此可见,Node.js 本身并不会直接提供一个内置的模块,让你立刻就能用它构建出这样的服务器程序,但你可以通过Node.js 内置的这些模块,把你想要构建的程序给组合出来。
常用的一些Node.js 库都不是Node.js 自带的(例如,Express.js、Next.js,以及许多其名称以.js 结尾的库都是如此),这些库是为了在特定的领域中,提供一套近乎完整的解决方案。比方说,Express.js 所擅长的是建立并运行Web服务器程序(这种服务器能够向客户端呈现静态资源,还支持其他一些很好的功能)。在实际工作中,大多数开发者都不会直接用到Node.js 本身的能力,因此,许多教程关注的是直接使用各种程序库所提供的现成方案,让读者更快地实现自己想要的东西。许多人都认为,只有那些自身工作就是开发程序库的人,才需要理解Node.js 技术的底层知识。
然而我却要说,我们首先必须深刻了解Node.js 的原生功能,然后才能更好地利用外部的程序库及工具。因为这样可以让开发者更为明智地判断自己应该选用哪一个程序库,以及如何才能发挥出这个程序库的能力。我写这本书是想尝试采用另一种方式去认识Node.js,也就是先学习它的原生功能,然后再以这些知识为基础,去充分利用Node.js 生态系统里面的各种程序库与工具。
排版约定
本书采用以下排版约定。
斜体(Italic)
表示新术语、URL、电子邮件地址、文件名和文件扩展名。
等宽字体(Constant width)
表示程序清单,在段落内表示程序元素,例如变量、函数名称、数据库、数据类型、环境变量、语句和关键字。
斜体等宽字体(Constant width italic)
表示应该替换成用户提供值的文本,或者由上下文决定的值。
使用代码示例
本书的辅助材料( 例如范例代码与习题等), 可以从https://oreil.ly/EfficientNodeCode 下载。
如果有技术问题或是在使用范例代码时遇到困难,请发电子邮件至support@oreilly.com。
本书是要帮你完成工作的。一般来说,如果本书提供了示例代码,你可以把它用在你的程序或文档中。除非你使用了很大一部分代码,否则无需联系我们获得许可。比如,用本书的几个代码片段写一个程序就无需获得许可,销售或分发O’Reilly 图书的示例集则需要获得许可;引用本书中的示例代码回答问题无需获得许可,将书中大量的代码放到你的产品文档中则需要获得许可。
我们很希望但并不强制要求你在引用本书内容时加上引用说明。引用说明一般包括书名、作者、出版社和ISBN,例如:“Efficient Node.js by Samer Buna (O’Reilly). Copyright 2025 Samer Buna, 978-1-098-14519-4 ”。
如果你觉得自己对示例代码的使用超出了上述许可范围, 请通过permissions@oreilly.com 与我们联系。
O’Reilly 在线学习平台(O’Reilly Online Learning)
近40 年来,O’Reilly Media 致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
公司独有的专家和改革创新者网络通过O’Reilly 书籍、文章以及在线学习平台,分享他们的专业知识和实践经验。O’Reilly 在线学习平台按照您的需要提供实时培训课程、深入学习渠道、交互式编程环境以及来自O’Reilly 和其他200 多家出版商的大量书籍与视频资料。更多信息,请访问网站:/。
联系我们
任何有关本书的意见或疑问,请按照以下地址联系出版社。
美国:
O’Reilly Media, Inc.
141 Stony Circle, Suite 195
Santa Rosa, CA 95401
中国:
北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035)
奥莱利技术咨询(北京)有限公司
本书的配套网页含有勘误表、范例代码,以及其他附加信息。这个页面的网址是:
。
欲了解本社图书和课程的新闻和信息,请访问我们的网站http://oreilly.com。
我们的LinkedIn:
。
我们的YouTube:
。
致谢
我对促成本书出版并帮助提升其品质的诸君表示深深的谢意。由衷感谢O’Reilly Media 团队,你们在我写本书的过程中,一直给予耐心的指导与坚定的支持。尤其感谢开发编辑Jeff Bleiel 提出了许多绝佳的想法,这些想法极大提升了本书的清晰程度与讲解效果。感谢编辑Amanda Quinn、文字编辑Miah Sandvik,以及产品编辑Gregory Hyman,你们对本书做出了重要的贡献。
我还要感谢审读本书草稿的诸位优秀软件开发者,你们提供的反馈对我很有帮助,这些建议对改善本书内容起到了关键的作用。特别感谢指出我疏漏的Hazem Twair,以及认真为本书做技术校对的Tamas Piros 与Aniket Wattamwar。你们的努力让这本书变得更为实用,也更加精致。
始终感谢Node.js 开发者社区的诸位良师益友,你们给我带来了智慧与灵感,并给我以鼓励。
总之,感谢为本书作出贡献的每一个人,你们的辛勤付出,让这本书的品质远远超出了单凭我自己所能达到的水平。感谢大家的帮助,这对我来说非常重要。
目录
目录
前言 1
第1 章 Nodejs 基础 7
11 Node 综述 8
111 JavaScript 语言 10
112 如何执行Node 代码 11
113 内置模块的用法 14
114 包的用法 19
115 ES 模块 24
116 异步操作 30
12 非阻塞模型 32
13 Node 内置的模块 41
14 Node 平台的软件包 43
15 针对Node 的一些批评 45
16 小结 47
第2 章 脚本与模块 49
21 Node 的命令行界面 49
211 选项与参数 51
212 环境变量 55
213 REPL 模式 59
22 Node 模块的导入过程 65
221 解析模块 65
222 加载模块 66
223 界定模块的作用范围67
224 执行模块 70
225 将模块缓存起来 75
23 小结 76
第3 章 异步与事件 79
31 同步处理与异步处理 79
32 如何编写Handler 84
321 采用Promisethencatch 写法编写Handler 87
322 采用async/await 写法编写Handler 90
323 用比喻来说明什么是Promise 93
33 事件循环97
34 事件触发器 99
341 如何在执行异步任务时正确触发事件 102
342 如何处理执行异步调用时出现的错误 105
343 举例说明如何处理EventEmitter 所产生的事件 106
35 小结 109
第4 章 错误与调试 111
41 错误的抛出与捕获 111
42 错误的类型 114
421 标准错误 114
422 系统错误 116
423 自定义错误 118
43 分层的错误管理机制 121
44 调试Node 程序 124
45 预防措施127
451 通过一些工具提升代码质量 127
452 使用不可变的对象 128
453 执行自动化的测试 128
454 坚持做代码审查 129
46 小结 129
第5 章 软件包的管理 131
51 包管理机制简介 131
52 npm 命令 134
53 语义化的版本控制 140
54 软件包的更新与移除 142
55 软件包的建立与发布 146
56 用npm run 命令运行任务脚本 149
57 npx 命令 153
58 小结 155
第6 章 数据流 157
61 数据流简介 157
62 流的用法160
63 流的基础知识 164
64 pipe 与pipeline 方法 165
65 数据流事件 167
66 暂停模式与流动模式 169
67 实现数据流 170
671 实现可写流 170
672 可读流 172
673 双工流/ 变换流 175
68 异步的生成器与迭代器 177
69 数据流的对象模式 180
610 Node 内置的变换流 182
611 小结 184
第7 章 子进程 187
71 子进程简述 187
72 spawn 函数 188
73 shell 语法及exec 函数 192
74 execFile 函数 195
75 fork 函数 197
76 小结 201
第8 章 测试Node 代码 203
81 断言与测试运行器 204
82 各种类型的测试 208
821 单元测试 210
822 功能测试 211
823 集成测试 212
824 端到端测试 212
83 Test Double 213
84 测试的整理与筛选 221
85 测试驱动开发 223
86 持续集成(CI) 225
87 小结 226
第9 章 扩展Node 应用程序 229
91 扩展策略229
92 Cluster 模块 231
93 主进程与工作进程 232
94 对工作进程做消息广播 237
95 提升可用性 241
96 零停机重启 243
97 如何管理状态信息 247
98 进程管理器 251
99 小结 251
第10 章 各种实用的Node 工具 253
101 代码质量工具 253
1011 Prettier 255
1012 ESLint 257
1013 其他工具 259
102 模块打包器 259
103 任务运行器 263
104 框架 266
105 JavaScript 转译器 271
106 TypeScript 272
107 小结 279
- 有电书房
- 扫描二维码,访问我们的微信店铺