《Node.js 硬实战:115 个核心技巧》是一本面向实战的Node.js 开发进阶指南。作为资深专家,《Node.js 硬实战:115 个核心技巧》作者独辟蹊径,将着眼点放在Node.js 的核心模块和网络应用,通过精心组织的丰富实例,向读者充分展示了Node.js 强大的并发处理能力,读者从中可真正掌握Node 的核心基础与高级技巧。《Node.js 硬实战:115 个核心技巧》总共有三部分内容,第一部分是Node.js 的基础核心,涉及Buffer、流、网络和进程等相关知识;第二部分是项目实践,涉及测试、Web 开发、调试,生产环境等重要话题;第三部分则完整创建了一个Node.js 模块。每部分涉及的技术都有详细讲解及注释详尽的示例代码,以帮助读者们更好地理解要点及其应用。
《Node.js 硬实战:115 个核心技巧》适合有一定JavaScript 基础,追求在Node.js 上更进一步的开发者。
第一部分Node 基础
1 入门. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1 Node 入门3
1.1.1 为什么使用Node 3
1.1.2 Node 的主要特性5
1.2 构建一个Node 应用7
1.2.1 创建一个新的Node 项目8
1.2.2 创建一个流的类9
1.2.3 使用流10
1.2.4 编写测试11
1.3 总结13
2 全局变量:Node 环境. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.1 模块16
技巧1 安装与加载模块16
技巧2 创建与管理模块17
技巧3 加载一组相关的模块20
技巧4 使用路径22
2.2 标准I/O 以及console 对象23
技巧5 标准I/O 流的读写24
技巧6 打印日志消息25
技巧7 基准测试27
2.3 操作系统与命令行29
技巧8 获取平台信息29
技巧9 传递命令行参数30
技巧10 退出程序31
技巧11 响应信号量33
2.4 使用timer 延迟执行35
技巧12 通过setTimeout 延迟执行函数35
技巧13 通过定时器定时调用回调函数37
技巧14 安全的操作异步接口38
2.5 总结41
3 Buffers:使用比特、字节以及编码. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1 修改数据编码44
技巧15 Buffer 转换为其他格式44
技巧16 使用Buffers 来修改字符串编码46
3.2 二进制文件转换为JSON 49
技巧17 使用Buffer 来转换原始数据49
3.3 创建你自己的二进制协议65
技巧18 创建自己的网络协议65
3.4 总结71
4 Events:玩转EventEmitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
4.1 基础用法73
技巧19 从EventEmitter 继承73
技巧20 混合EventEmitter 76
4.2 异常处理78
技巧21 管理异常78
技巧22 通过domains 管理异常80
4.3 高级模式82
技巧23 反射82
技巧24 探索EventEmitter 85
技巧25 组织事件名称87
4.4 第三方模块以及扩展88
技巧26 EventEmitter 的替代方案89
4.5 总结91
5 流:最强大和最容易误解的功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
5.1 流的介绍94
5.1.1 流的类型94
5.1.2 什么时候使用流94
5.1.3 历史95
5.1.4 第三方模块中的流96
5.1.5 流继承事件97
5.2 内置流98
技巧27 使用内置的流来实现静态web 服务器98
技巧28 流的错误处理101
5.3 第三方模块和流102
技巧29 使用流的第三方模块102
5.4 使用流基类105
技巧30 正确地从流的基类继承105
技巧31 实现一个可读流107
技巧32 实现一个可写流111
技巧33 使用双工流转换和接收数据113
技巧34 使用转换流解析数据114
5.5 高级模式和优化118
技巧35 流的优化118
技巧36 使用老的流API 121
技巧37 基于功能的流适配123
技巧38 测试流125
5.6 总结128
6 文件系统:通过异步和同步的方法处理文件. . . . . . . . . . . . . . . . . . . . . . . . . 129
6.1 fs 模块概述130
6.1.1 POSIX 文件系统包装器130
6.1.2 流132
6.1.3 批量文件操作133
6.1.4 文件监视133
6.1.5 同步的替代方案133
技巧39 读取配置文件134
技巧40 使用文件描述136
技巧41 使用文件锁137
技巧42 递归文件操作142
技巧43 编写文件数据库147
技巧44 监视文件以及文件夹151
6.2 总结154
7 网络:Node 真正的“Hello, World” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
7.1 Node 中的网络156
7.1.1 网络技术157
7.1.2 Node 网络模块161
7.1.3 非阻塞网络和线程池162
7.2 TCP 客户端和服务端163
技巧45 创建TCP 服务端和客户端163
技巧46 使用客户端测试TCP 服务端165
技巧47 改进实时性低的应用168
7.3 UDP 客户端和服务端170
技巧48 通过UDP 传输文件170
技巧49 UDP 客户端服务应用174
7.4 HTTP 客户端和服务端179
技巧50 HTTP 服务器179
技巧51 重定向181
技巧52 HTTP 代理186
7.5 创建DNS 请求189
技巧53 创建DNS 请求189
7.6 加密191
技巧54 一个加密的TCP 服务器192
技巧55 加密的Web 服务器和客户端196
7.7 总结198
8 子进程:利用Node 整合外部应用程序. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
8.1 执行外部应用程序202
技巧56 执行外部应用程序202
8.1.1 路径和Path 的环境变量203
8.1.2 执行外部程序时候出现的异常204
技巧57 流和外部应用程序205
8.1.3 外部应用程序的串联调用206
技巧58 在shell 中执行命令208
8.1.4 安全性和shell 命令执行209
技巧59 分离子进程210
8.1.5 父进程和子进程之间的I/O 处理211
8.1.6 引用计数和子进程213
8.2 执行Node 程序213
技巧60 执行Node 程序214
技巧61 Forking Node 模块216
技巧62 运行作业218
8.2.1 工作池220
8.2.2 使用池模块222
8.3 同步运行223
技巧63 同步子进程223
8.4 总结227
第二部分实践中的技巧
9 网络:构建精简的网络应用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
9.1 前端技术231
技巧64 快速的静态网站服务器231
技巧65 在Node 中使用DOM 236
技巧66 在浏览器端使用Node 模块238
9.2 服务端技术241
技巧67 Express 路由分离241
技巧68 自动重启服务器245
技巧69 配置web 应用248
技巧70 优雅地处理错误253
技巧71 RESTful web 应用257
技巧72 使用自定义的中间件267
技巧73 使用事件进行解耦273
技巧74 使用WebSockets 来处理sessions 276
技巧75 升级Express 3 到4 281
9.3 web 应用程序的测试285
技巧76 测试路由286
技巧77 为中间件注入创建seams 288
技巧78 测试依赖远程服务的应用291
9.4 全栈框架297
9.5 实时服务299
9.6 总结300
10 测试:编写健壮代码的关键. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
10.1 Node 测试的相关介绍303
10.2 使用断言编写简单的测试304
技巧79 用内置的模块编写测试305
技巧80 编写验证异常的测试308
技巧81 创建自定义的断言312
10.3 测试装置314
技巧82 使用一个测试装置组织测试314
10.4 测试框架318
技巧83 使用Mocha 编写测试319
技巧84 使用Mocha 测试web 应用323
技巧85 万能测试协议(TAP) 328
10.5 测试工具331
技巧86 持续集成331
技巧87 数据库装置335
10.6 扩展阅读343
10.7 总结343
11 调试:用于发现和解决问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
11.1 内省345
11.1.1 显式异常345
11.1.2 隐藏的异常346
11.1.3 错误事件346
11.1.4 错误参数347
技巧88 处理未捕获的异常348
技巧89 检查我们的Node 代码351
11.2 问题的调试352
技巧90 使用Node 内置的调试器352
技巧91 使用Node Inspector 359
技巧92 对Node 应用进行性能分析361
技巧93 内存泄漏的调试365
技巧94 使用REPL 来检测运行中的程序370
技巧95 跟踪系统调用377
11.3 总结381
12 生产环境中的Node:安全地部署应用程序. . . . . . . . . . . . . . . . . . . . . . . . . . 382
12.1 部署383
技巧96 将Node 程序部署到云端383
技巧97 使用Apache 和Ngnix 部署Node 程序389
技巧98 在80 端口上安全地运行Node 程序392
技巧99 保持Node 进程一直运行394
技巧100 在生产环境中使用WebSockets 396
12.2 Node 程序的缓存和扩展性402
技巧101 HTTP 缓存402
技巧102 为程序的路由和扩展使用Node 代理404
技巧103 使用集群保持程序的扩展性和弹性408
12.3 维护413
技巧104 包的优化413
技巧105 日志和日志服务415
12.4 更多关于Node 程序的扩展性和弹性的备注418
12.5 总结419
第三部分编写模块
13 编写模块,掌握Node 的所有. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
13.1 头脑风暴424
13.1.1 更快的斐波那契模块424
技巧106 计划编写我们的模块425
技巧107 验证我们模块的想法427
13.2 创建package.json 文件433
技巧108 创建package.json 文件433
技巧109 依赖处理436
技巧110 语义化版本号441
13.3 用户体验444
技巧111 添加可执行脚本444
技巧112 在本地测试模块446
技巧113 在不同版本Node 中测试448
13.4 发布451
技巧114 发布模块451
技巧115 使用私有模块453
13.5 总结455
A 社区. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Thelastdecadehaswitnessedaproliferationofartistswhoseprimarymediumissoftware.Alg...
《最新英语专业考研名校真题集:语言学》内容简介:本书是“北京环球时代学校英语专业考研点睛丛书”之一。书中内容以《高等学校英
《给孩子的心灵成长书》内容简介:《给孩子的心灵成长书》精选季羡林先生48篇适合孩子阅读的散文佳作,内容或描绘自然万物,或记叙
Inordertounderstandtheframeworkinthecontextofareal-worldapplication,weneedtobuil...
《林汉涛鸡血玉篆刻艺术》内容简介:本书收录了林汉涛2010—2015年间采用硬玉(绝大多数为鸡血玉)创作的篆刻作品六十余件,以及书
日本設計大師原研哉為其設計生涯的諸多作品,以淺顯易懂的精鍊語言,做全面性解說。近年來的新作,如「HAPTIC」展、北京奧運象徵
"数十亿人身在其中、数十万亿美元的新生意,你我此生最大的科技革命,这次转型将如何改变我们的生活?又如何使我们做生意的方式起
《通信协议技术》是OHM通信实用技术系列之一。《通信协议技术》中基于以下三方面介绍通信协议技术:(1)通信协议中怎样利用图像
《微课设计与制作一本通》内容简介:本书分为“微课视频的设计和制作”“微课视频制作软件”上下两篇,上篇介绍微课设计的基本概念
《Git权威指南》是Git领域的集大成之作,是一本关于Git的百科全书,在广度、深度和实战性上让同类作品望尘莫及。作者是国内顶尖的
本书包括:分子生物物理、生物膜及其物理性质、光生物物理、辐射生物物理、自由基生物学、生物电学与生物磁学、生物分子电子学、
Arduino不仅仅是全球最流行的开源硬件,也是一个优秀的硬件开发平台,更是硬件开发的趋势。Arduino简单的开发方式使得开发者更关
《研发绩效管理手册(第2版)》内容简介:本书从中国企业目前的研发绩效管理现状入手,结合作者多年的实践经验,详细介绍了研发绩效
ThedesignersJasperMorrisonandNaotoFukasawahavecompiled204everydayobjectsinsearch...
《应用组合数学(第5版)》讲解了离散数学问题求解中组合推理和组合建模的方法、思维和运用。主要涉及图论基本概念、覆盖和图着色、
服务器端JavaScript?没错。Node.js是一个JavaScript服务器,支持可伸缩的高性能Web应用。借助异步I/O,这个服务器可以同时做很多
《基于Web挖掘的个性化信息推荐》内容简介:基于Web挖掘的个性化信息推荐是解决当前互联网“信息过载”问题的重要手段之一。《基
《辽金元诗鉴赏》内容简介:本书是以辽金元三代的诗歌作品——包含诗、词、曲为基础,而编选、注释、鉴赏的广义诗选。共选择经典作
《DebugHacks中文版—深入调试的技术和工具》是MiracleLinux的创始人吉冈弘隆和几位工程师们多年从事内核开发的经验积累。从调试
在游戏开发中,应用正确的物理定律可以逼真地模拟游戏中任何弹跳、飞行、翻滚、滑行或非静止的物体,以建立令人注目且真实的游戏