Node.js是一套用来编写高性能网络服务器的JavaScript工具包。它可以让JavaScript在服务器端运行,因此,它可用来快速构建网络服务及应用的平台。 本书是学习Node编程的入门指南。全书共12章,由浅入深。本书首先介绍Node的基础知识、Node的核心功能、Node的模块系统和REPL等,然后讲解Node的Web应用、流和管道、Node对文件系统的支持、网络和套接字、子进程、ES6等相关知识,*后介绍了全栈Node编程、Node的开发环境和产品环境以及Node的新应用。 本书适合有一定基础的JavaScript程序员阅读,也适合对学习Node应用开发感兴趣的读者学习参考。
目录
- 第 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
基本没什么用,看得出作者对node并不很懂,75页例3-6给的async.waterfall代码根本就不能处理多个文件