Node 学习指南

Node 学习指南
编辑推荐
适读人群 :具备一定 JavaScript 开发基础的网络开发爱好者
- ·作者为资深 Web 开发工作者,将自己多年的实战经验与读者分享,阅读完本书,读者可以通过 Node 将 Web 开发技术从浏览器扩展到服务端,并且学习如何在基于 JavaScript 的平台上实现快速和高度可扩展的网络应用。
- ·本书针对 Node 长期支持版本(LTS)和 Node6.0 版本进行了更新。通过本书,读者可以掌握 Node 的核心技能并了解如何使用内建和第三方模块。
- ·此外,本书还讲解了 Node 的事件驱动异步 I O 模型。它可以帮助读者搭建出提供高并发访问而不涉及大量计算的数据密集型应用。如果读者对 JavaScript 比较感兴趣,可以通过本书提供的代码和部署示例在服务端使用 Node 进行开发。
内容简介
Node.js 是一套用来编写高性能网络服务器的 JavaScript 工具包。它可以让 JavaScript 在服务器端运行,因此,它可用来快速构建网络服务及应用的平台。 本书是学习 Node 编程的入门指南。全书共 12 章,由浅入深。本书首先介绍 Node 的基础知识、Node 的核心功能、Node 的模块系统和 REPL 等,然后讲解 Node 的 Web 应用、流和管道、Node 对文件系统的支持、网络和套接字、子进程、ES6 等相关知识,最后介绍了全栈 Node 编程、Node 的开发环境和产品环境以及 Node 的新应用。 本书适合有一定基础的 JavaScript 程序员阅读,也适合对学习 Node 应用开发感兴趣的读者学习参考。
作者简介
Shelley Powers 一直从事 Web 技术相关的工作,并为此著书。她的著作的内容涉及很多方面,从 JavaScript 的**个版本到新的图像和设计工具。她近出版的图书涵盖语义网、Ajax、JavaScript 和网络图像等内容。
目录
第 1 章 Node 运行环境 1
- 1.1 安装 Node 1
- 1.2 使用 Node 编写“Hello, World” 3
- 1.2.1 一个基本的 Hello World 程序 3
- 1.2.2 升级版 Hello World 6
- 1.2.3 Node 命令行参数 9
- 1.3 Node 部署环境 10
- 1.3.1 将 Node 部署在你的服务器、VPS 或者托管主机上 10
- 1.3.2 云部署 10
- 1.4 Node 长期支持和 Node 升级 11
- 1.4.1 Node 的最新语义化版本规范 12
- 1.4.2 Node 版本更新 13
- 1.5 Node、V8 和 ES6 14
- 1.6 高级内容:Node 的 C C++ 插件 15
第 2 章 Node 基础:全局对象、事件和 Node 自身的异步特性 18
- 2.1 global 和 process 对象 19
- 2.1.1 global 对象 19
- 2.1.2 process 对象 20
- 2.2 缓冲器(buffer)、类型化数组和字符串 24
- 2.2.1 缓冲器、JSON、StringDecoder 和 UTF-8 字符串 26
- 2.2.2 缓冲器操作 28
- 2.3 Node 的回调函数和异步事件处理 31
- 2.3.1 事件队列(循环) 31
- 2.3.2 创建一个异步回调函数 35
- 2.3.3 EventEmitter 37
- 2.3.4 Node 事件循环和定时器 41
- 2.4 嵌套回调和异常处理 44
第 3 章 Node 模块和 Node 包管理器(npm)基础 52
- 3.1 Node 模块系统概览 52
- 3.1.1 Node 如何查找并加载一个模块 53
- 3.1.2 沙箱和虚拟机模块 56
- 3.2 NPM 的深度挖掘 60
- 3.3 创建和发布你自己的 Node 模块 65
- 3.3.1 创建一个模块 65
- 3.3.2 将整个目录打包 66
- 3.3.3 准备发布一个模块 67
- 3.3.4 发布模块 70
- 3.4 探索 Node 模块以及 3 个必要模块 71
- 3.4.1 使用 Async 来更好地管理回调函数 73
- 3.4.2 使用 Commander 玩转命令行 78
- 3.4.3 无所不在的 Underscore 80
第 4 章 交互式 Node 和 REPL,以及控制台的深入研究 82
- 4.1 REPL 的初体验和 undefined 表达式 82
- 4.2 REPL 的好处:深入理解 JavaScript 引擎 84
- 4.3 更复杂的多行 JavaScript 85
- 4.3.1 REPL 命令 89
- 4.3.2 REPL 和 rlwrap 89
- 4.3.3 自定义 REPL 91
- 4.4 世事无常——经常保存 94
- 4.5 控制台的必要性 95
- 4.5.1 控制台消息类型、Console 类以及阻塞 95
- 4.5.2 使用 util.format() 和 util.inspect() 来格式化消息 97
- 4.5.3 用控制台和定时器提供更丰富的反馈 101
第 5 章 Node 和 Web 102
- 5.1 HTTP 模块:服务器(server)和客户端(client) 102
- 5.2 创建一个静态网站服务器都需要什么 107
- 5.3 使用 Apache 来代理 Node 服务器 115
- 5.4 使用 Query String 来解析参数 117
- 5.5 DNS 解析 118
第 6 章 Node 和本地系统 120
- 6.1 探索操作系统 120
- 6.2 流(Stream)和管道(Pipe) 122
- 6.3 文件系统的正式介绍 123
- 6.3.1 fs.Stats 类 124
- 6.3.2 文件系统监听器 126
- 6.3.3 文件读取和写入 127
- 6.3.4 目录的访问和维护 128
- 6.3.5 文件流 129
- 6.4 通过路径访问资源 131
- 6.5 创建一个命名行工具 133
- 6.6 使用 ZLib 进行压缩 解压缩 135
- 6.7 管道和 ReadLine 模块 138
第 7 章 网络、套接字和安全 141
- 7.1 服务器、流和套接字 141
- 7.1.1 套接字和流 141
- 7.1.2 TCP 套接字和服务器 142
- 7.1.3 UDP 数据报套接字 147
- 7.2 守门人 148
- 7.2.1 安装 TLS SSL 149
- 7.2.2 使用 HTTPS 150
- 7.2.3 Crypto 模块 152
第 8 章 子进程 157
- 8.1 child_process.spawn 157
- 8.1.1 child_process.exec 和 child_process.execFile 161
- 8.1.2 child_process.fork 163
- 8.2 在 Windows 中运行一个子进程程序 164
第 9 章 Node 和 ES6 167
- 9.1 严格模式 167
- 9.2 let 和 const 169
- 9.3 箭头函数 171
- 9.4 类 173
- 9.5 使用 Bluebird 来实现 promise 175
第 10 章 全栈 Node 开发 179
- 10.1 Express 应用框架 179
- 10.2 MongoDB 和 Redis 数据库系统 185
- 10.2.1 MongoDB 186
- 10.2.2 Redis 中的 key value 存储 189
- 10.3 AngularJS 和其他全栈框架 196
第 11 章 Node 开发环境和产品环境 202
- 11.1 调试 Node 程序 202
- 11.1.1 Node 调试器 202
- 11.1.2 Node 检查器 207
- 11.2 单元测试 210
- 11.2.1 使用 Assert 进行单元测试 210
- 11.2.2 用 Nodeunit 写单元测试 213
- 11.2.3 其他的测试框架 215
- 11.3 保持 Node 进程的运行 218
- 11.4 使用 Apache Bench 进行基准测试和负载测试 221
第 12 章 新环境中的 Node 224
- 12.1 三星的 IoT 和 GPIO 224
- 12.2 Windows 与 Chakra Node 226
- 12.3 微控制器和微型计算机中的 Node 227
- 12.3.1 Fritzing 228
- 12.3.2 Node 和 Arduino 232
- 12.3.3 Node 和树莓派 2 238