商品参数
| Node.js硬实战:115个核心技巧 |
| | 定价 | 109.90 |
| 出版社 | 电子工业出版社 |
| 版次 | 01 |
| 出版时间 | 2017年01月 |
| 开本 | 16开 |
| 作者 | [美] Alex,R.,Young(亚历克斯?荣),Marc,Harter(马克?哈特) 著;承竹 等 译 |
| 装帧 | 平装 |
| 页数 | 486 |
| 字数 | |
| ISBN编码 | 9787121304026 |
内容介绍
Node.js 是—个持续走热的供开发人员开发服务器端应用的平台,但是目前Node.js is的相关实例仍明显不足,尤其与实践差距较大。本书汇总了115种Node实践中的实用技术,书中所有代码都是经过测试、立即可用且相互关联的。内容包括基于事件编程、为什么及如何使用闭包、如何利用端到端的应用构建自己的应用程序,等等。代码段注释丰富,非常便于读者理解,而精心设计的交叉引用则提示了某—技术与其他技术之间的联系。
作者介绍
承竹,前支付宝前端开发工程师,现唯品会高级开发工程师。爱折腾,对计算机世界充满好奇,喜欢 语言,致力于成为—个理想中的靠谱软件工程师。徐佶辉,花名慕陶,08年开始工作,现任蚂蚁金服前端开发。在翻译《Node.js硬实战》这本书的过程中学到了很多,也深深发现这是本介绍node不可多得的好书。 Marc Harter 致力于构建大型项目,包括高可用的实时应用、流式接口和其他数据密集型系统。__eol__Alex Young 是—位经验丰富的 开发者,定期在 DailyJS 博客发表文章。
目录
第—部分 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
xii 目录
技巧 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
目录 xiii
4.3 高级模式 82
技巧 23 反射 82
技巧 24 探索 EventEmitter 85
技巧 25 组织事件名称 87
4.4 第三方模块以及扩展 88
技巧 26 EventEmitter 的替代方案 89
4.5 总结 91
5 流:zui强大和zui容易误解的功能 .................................... 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
xiv 目录
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
目录 xv
技巧 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
xvi 目录
第二部分 实践中的技巧
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
目录 xvii
10.3 测试装置 314
技巧 82 使用—个测试装置组织测试 314
10.4 测试框架 318
技巧 83 使用 Mocha 编写测试 319
技巧 84 使用 Mocha 测试 web 应用 323
技巧 85 wan能测试协议(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
xviii 目录
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
目录 xix
技巧 113 在不同版本 Node 中测试 448
13.4 发布 451
技巧 114 发布模块 451
技巧 115 使用私有模块 453
13.5 总结 455
A 社区................................................................457
精通Node.js:从零到一打造高性能Web应用 本书简介: 欢迎来到Node.js的世界!如果你正怀揣着打造高效、可扩展的Web应用程序的梦想,那么本书将是你不可或缺的向导。我们将带你深入探索Node.js的核心概念,掌握现代JavaScript开发所需的关键技能,并实战构建各种实际应用,让你从技术新手蜕变为一名自信的Node.js开发者。 为何选择Node.js? 在当今快速发展的Web开发领域,Node.js以其独特的优势脱颖而出: JavaScript全栈开发: 利用你熟悉的JavaScript语言,同时驾驭前端和后端开发,大大提高开发效率,减少团队沟通成本。 非阻塞I/O与事件驱动: Node.js的异步非阻塞I/O模型,使其在处理高并发请求时表现出色,非常适合构建实时应用、API服务器和微服务。 庞大的npm生态系统: npm(Node Package Manager)拥有数百万个开源模块,几乎可以满足你开发中的任何需求,让你事半功倍。 活跃的社区支持: Node.js拥有全球最活跃的开发者社区之一,遇到问题总能获得及时的帮助和丰富的资源。 本书内容概述: 本书将带领你踏上一段全面的Node.js学习之旅,从最基础的概念到高级的实战技巧,层层递进,确保你能够真正理解并灵活运用Node.js。 第一部分:Node.js基础与核心概念 Node.js入门: Node.js是什么?它为何如此流行? 搭建Node.js开发环境:安装Node.js和npm,配置你的开发机器。 第一个Node.js程序:Hello, World! 让你快速上手。 Node.js的运行机制:理解事件循环(Event Loop)和回调函数(Callback Functions),这是Node.js性能的关键。 模块系统:CommonJS规范,`require()`和`module.exports`的使用,理解模块化开发的重要性。 核心模块概览:`fs`(文件系统)、`http`(HTTP模块)、`path`(路径模块)等常用核心模块的介绍和基本用法。 JavaScript进阶(针对Node.js): 箭头函数、`let`和`const`:现代JavaScript语法在Node.js中的应用。 Promises和Async/Await:优雅地处理异步操作,告别回调地狱。 ES Modules(ESM):了解并使用新的模块化标准。 类(Classes)和面向对象编程:在Node.js中构建更清晰的代码结构。 第二部分:构建Web服务器与API HTTP服务器基础: 使用Node.js内置的`http`模块创建基本的HTTP服务器。 处理HTTP请求(Request)和响应(Response)。 路由(Routing):如何根据请求URL将用户导向不同的处理逻辑。 请求方法:GET, POST, PUT, DELETE等的使用。 发送JSON响应:构建RESTful API的基础。 Express.js框架: Express.js:Node.js最流行的Web框架,为何如此受欢迎? 安装和配置Express.js。 中间件(Middleware)的概念和应用:理解Express.js的请求处理流程。 路由的强大功能:使用Express Router组织复杂的路由。 静态文件服务:如何为你的Web应用提供静态资源。 模板引擎:EJS、Pug等,用于生成动态HTML页面。 表单处理:接收和处理用户提交的表单数据。 错误处理:优雅地处理应用程序中的错误。 RESTful API设计与实现: RESTful API的核心原则。 使用Express.js构建符合RESTful规范的API。 HTTP状态码的正确使用。 API版本控制。 第三部分:数据库交互 数据库基础概念: 关系型数据库(如MySQL, PostgreSQL)与NoSQL数据库(如MongoDB)的区别。 选择适合你项目的数据库。 MongoDB与Mongoose: MongoDB简介:文档数据库的优势。 安装和配置MongoDB。 Mongoose:MongoDB的对象模型工具,简化数据库操作。 定义Schema和Model。 CRUD操作(Create, Read, Update, Delete)的实现。 数据验证和关系。 SQL数据库与ORM: (可选,根据读者需求)如果选择SQL数据库,将介绍Sequelize或Knex.js等ORM/Query Builder的使用。 第四部分:认证与授权 用户认证: Session-based认证。 Token-based认证(JWT - JSON Web Tokens):如何实现安全的API认证。 密码哈希与加盐:保护用户密码安全。 用户授权: 基于角色的访问控制(RBAC)。 实现不同用户角色的权限管理。 第五部分:部署与扩展 部署你的Node.js应用: 选择部署平台:Heroku, AWS, DigitalOcean, Vercel等。 使用PM2管理Node.js进程:实现进程守护、负载均衡和日志管理。 生产环境配置:环境变量、日志记录。 构建可扩展的应用: 理解Node.js的单线程模型和事件循环。 使用集群(Cluster)模块提升CPU利用率。 微服务架构简介。 第六部分:进阶主题与最佳实践 测试你的Node.js应用: 单元测试、集成测试和端到端测试。 使用Mocha, Chai, Jest等测试框架。 性能优化: 代码优化技巧。 缓存策略。 使用Node.js的性能分析工具。 安全实践: 防范常见的Web安全漏洞(XSS, CSRF, SQL注入等)。 安全编码规范。 GraphQL简介(可选): 了解GraphQL作为RESTful API的替代方案。 学习本书,你将获得: 扎实的Node.js理论基础: 深入理解Node.js的工作原理,让你知其然,更知其所以然。 丰富的实战经验: 通过大量的代码示例和项目实践,将理论知识转化为实际开发能力。 构建现代化Web应用的自信: 从零开始,独立完成复杂Web应用的设计、开发和部署。 解决实际问题的能力: 掌握调试和优化技巧,能够高效地处理开发中遇到的各种挑战。 一份宝贵的技能财富: Node.js是当今Web开发领域最炙手可热的技术之一,掌握它将为你带来更广阔的职业发展前景。 本书适合读者: 前端开发者: 希望扩展技术栈,成为全栈开发者。 后端开发者: 寻求更高效、更具扩展性的后端解决方案。 初学者: 对Web开发充满热情,希望从零开始学习一门强大的后端技术。 有一定编程基础者: 希望快速掌握Node.js并将其应用于实际项目中。 行动起来! Node.js的强大之处在于它的灵活性和效率。本书的目标是让你掌握这些特性,并能够自信地运用它们来构建令人惊叹的Web应用。无论你是想构建一个快速的API服务器,一个实时的聊天应用,还是一个复杂的Web平台,Node.js都能满足你的需求。 现在,让我们一起踏上这段激动人心的Node.js学习之旅吧!翻开本书,你将发现一个充满可能性的开发世界。