第 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