内容简介
第Ⅰ部分 概述和安装
第1章 安装Node
1.1在Windows上安装Node
1.2在MAC OS X上安装Node
1.3使用源代码安装Node
1.3.1选择Node的版本
1.3.2下载Node源代码
1.3.3编译Node
1.3.4安装Node
1.3.5运行Node
1.4安装和应用Node包管理器
1.5本章小结
第2章 Node简介
2.1事件驱动编程风格介绍
2.2 Node和JavaScript如何简化异步应用程序的编写
2.2.1什么是闭包
2.2.2闭包如何辅助异步编程
2.3本章小结
第Ⅱ部分 Node核心API基础
第3章 加载模块
3.1理解Node如何加载模块
3.2导出模块
3.3加载模块
3.3.1加载核心模块
3.3.2加载文件模块
3.3.3加载文件夹模块
3.3.4从node modules文件夹加载
3.3.5缓存模块
3.4本章小结
第4章 应用缓冲区处理、编码和解码二进制数据
4.1创建缓冲区
4.2在缓冲区中获取和设置数据
4.3切分缓冲区
4.4复制缓冲区
4.5缓冲区解码
4.6本章小结
第5章 使用事件发射器模式简化事件绑定
5.1理解标准回调模式
5.2理解事件发射器模式
5.3理解事件类型
5.4应用事件发生器API
5.4.1使用.addListener()或.on()绑定回调函数
5.4.2绑定多个事件监听器
5.4.3使用.removeListener()从事件发射器中删除一个事件监听器
5.4.4使用.once()使回调函数最多执行一次
5.4.5使用.removeAllisteners()从事件发射器删除所有事件监听器
5.5创建事件发射器
5.5.1从Node事件发射器继承
5.5.2发射事件
5.6本章小结
第6章 使用定时器制定函数执行计划
6.1使用setTimeout推迟函数执行
6.2使用clearTimeout取消函数执行
6.3制定和取消函数的重复执行计划
6.4使用process.nextTick将函数执行推迟到下一轮事件循环
6.5阻塞事件循环
6.6退出事件循环
6.7使用setTimeout代替setInterval强制函数串行执行
6.8本章小结
第Ⅲ部分 文件、进程、流和网络
第7章 查询和读写文件
7.1处理文件路径
7.1.1规范化路径
7.1.2连接路径
7.1.3解析路径
7.1.4查找两个绝对路径之间的相对路径
7.1.5提取路径的组成部分
7.1.6确定路径是否存在
7.2 fs模块简介
7.3打开文件
7.4读取文件
7.4.1写入文件
7.4.2关闭文件
7.5本章小结
第8章 创建和控制外部进程
8.1执行外部命令
8.2生成子进程
8.2.1创建子进程
8.2.2监听子进程的输出数据
8.2.3向子进程发送数据
8.2.4当子进程退出时获得通知
8.3向进程发送信号并终止进程
8.4本章小结
第9章 读写数据流
9.1使用可读流
9.1.1等待数据
9.1.2暂停与恢复流
9.1.3了解流何时终止
9.2使用可写流
9.2.1将数据写入流
9.2.2等待流被清空
9.3考虑几个流的例子
9.3.1创建文件系统流
9.3.2理解网络流
9.4避免慢客户端问题以及
挽救服务器
9.4.1理解慢客户端问题
9.4.2避免慢客户端问题
9.4.3应用stream pipe()避免慢客户端问题与使用pipe()集成可读流和可写流
9.5本章小结
第10章 构建TCP服务器
10.1创建TCP服务器
10.1.1应用套接字对象
10.1.2理解空闲套接字
10.1.3设置保持运行
10.1.4应用延时或非延时
10.1.5监听连接
10.1.6关闭服务器
10.1.7处理错误
10.2构建一个简单的TCP聊天服务器
10.2.1接受连接
10.2.2从连接中读取数据
10.2.3聚合所有客户端
10.2.4广播数据
10.2.5删除被关闭的连接
10.2.6使用TCP聊天服务器
10.3本章小结
第11章 构建HTTP服务器
11.1理解http.ServerRequest对象
11.2理解http.ServerResponse对象
11.2.1写入响应头
11.2.2修改或设置响应头
11.2.3删除响应头
11.2.4写入一块响应主体
11.3以流的形式传送HTTP分块响应
11.3.1传送文件
11.3.2传送其他进程的输出
11.4关闭服务器
11.5示例1:构建提交静态文件的服务器
11.6示例2:使用HTTP分块响应和定时器
11.7本章小结
第12章 构建TCP客户端
12.1连接服务器
12.2发送和接收数据
12.3终止连接
12.4处理错误
12.5创建命令行TCP客户端的示例
12.5.1连接服务器
12.5.2向服务器发送命令行
12.5.3打印服务器消息
12.5.4在连接终止时重新连接
12.5.5关闭连接
12.5.6前述内容综合
12.6本章小结
第13章 创建HTTP请求
13.1创建GET请求
13.2使用其他HTTP动词
13.2.1查看响应对象
13.2.2获取响应主体
13.2.3以流的方式传送响应主体
13.3使用HTTP.Agent维护套接字池
13.4应用第三方请求模块简化HTTP请求
13.4.1安装和应用request模块
13.4.2创建测试服务器
13.4.3跟随重定向
13.4.4设置请求选项
13.4.5对请求体进行编码
13.4.6 流式传送
13.4.7使用Cookie Jar
13.5本章小结
第14章 使用用户数据报
14.1理解用户数据报
14.2理解用户数据报的使用
14.3构建数据报服务器
14.3.1监听消息
14.3.2测试服务器
14.3.3查看附加的消息信息
14.4创建简单的数据报回送服务器
14.4.1等待消息
14.4.2向发送端发回消息
14.4.3前述内容综合
14.5构建数据报客户端
14.5.1创建客户端
14.5.2发送消息
14.5.3关闭套接字
14.6创建一个简单的数据报命令行客户端
14.6.1读取命令行
14.6.2向服务器发送数据
14.6.3从服务器接收数据
14.6.4前述内容综合
14.7理解和使用数据报多播
14.7.1接收多播消息
14.7.2发送多播消息
14.7.3理解数据报最大容量
14.8本章小结
第15章 用TLS/SSL保证服务器的安全性
15.1理解私钥和公钥
15.1.1产生私钥
15.1.2产生公钥
15.2构建TLS服务器
15.2.1初始化服务器
15.2.2监听连接
15.2.3从客户端读取数据
15.2.4向客户端发送数据
15.2.5终止连接
15.3构建TLS客户端
15.3.1初始化客户端
15.3.2连接服务器
15.3.3验证服务器证书
15.3.4向服务器发送数据
15.3.5从服务器读取数据
15.3.6终止连接
15.4创建几个示例
15.4.1创建TLS聊天服务器
15.4.2创建TLS命令行聊天客户端
15.4.3验证客户端证书
15.5本章小结
第16章 用HTTPS保证HTTP服务器的安全性
16.1构建安全的HTTP服务器
16.1.1设置服务器选项
16.1.2监听连接
16.1.3验证HTTPS客户端证书
16.2创建HTTPS客户端
16.2.1初始化客户端
16.2.2创建请求
16.2.3验证HTTPS服务器证书
16.3本章小结
第Ⅳ部分 构建与调试模块及应用程序
第17章 测试模块及应用程序
17.1应用测试运行工具
17.1.1编写测试
17.1.2运行测试
17.2使用断言测试模块
17.2.1使用断言模块
17.2.2使用Node-Tap中的内置断言函数
17.3测试异步模块
17.4本章小结
第18章 调试模块及应用程序
18.1使用console.log
18.2使用Node内置调试器
18.3使用Node检查器
18.4本章小结
第19章 控制回调流程
19.1理解飞去来器效应
19.2通过声明函数避免飞去来器效应
19.3使用ASYNC流程控制库
19.3.1串行执行
19.3.2并行执行
19.3.3连续传递
19.3.4排队
19.3.5迭代
19.3.6映射
19.3.7规约
19.3.8过滤
19.3.9检测
19.4本章小结
第Ⅴ部分 构建Web应用程序
第20章 构建和使用HTTP中间件
20.1理解Connect HTTP中间件框架
20.2构建自定义HTTP中间件
20.2.1创建异步中间件
20.2.2在中间件内部注册回调函数
20.2.3在中间件内处理错误
20.3使用捆绑在Connect中的HTTP中间件
20.3.1记录请求
20.3.2处理错误
20.3.3提交静态文件
20.3.4解析查询字符串
20.3.5解析请求主体
20.3.6解析Cookies
20.3.7使用会话
20.3.8其他可用的中间件
20.4本章小结
第21章 用Express.js创建Web应用程序
21.1初始化Express.js应用程序
21.2在应用程序中设置中间件
21.3路由请求
21.3.1处理路由
21.3.2使用会话
21.3.3使用路由中间件
21.4本章小结
第22章 使用Socket.IO创建通用的实时Web应用程序
22.1理解WebSockets如何工作
22.2使用Socket.IO创建WebSocket应用程序
22.2.1在服务器上安装和运行Socket.IO
22.2.2使用Socket.IO创建实时网络聊天应用程序
22.2.3扩展聊天应用程序
22.2.4检测连接断开
22.2.5将用户分隔到聊天室中
22.2.6使用名称空间
22.2.7使用Redis分布运行服务器端应用程序
22.3本章小结
第Ⅵ部分 连接数据库
第23章 使用node-mysql连接MySQL数据库
23.1应用库与MySQL数据库进行连接和通信
23.2向数据库添加数据时请记住安全性
23.3高效读取数据
23.4本章小结
第24章 使用Nano连接CouchDB数据库
24.1安装Nano
24.2连接和创建数据库
24.3存储文档
24.4创建和使用CouchDB视图
24.5将文件附加到CouchDB文档上
24.6本章小结
第25章 使用 Mongoose连接MongoDB数据库
25.1安装Mongoose
25.2理解Mongoose如何使用模型封装对数据库的访问
25.3连接MongoDB数据库
25.4定义模式
25.5定义模型
25.5.1使用验证器
25.5.2使用修改器
25.5.3使用取值器
25.5.4使用虚拟属性
25.5.5使用默认值
25.5.6定义索引
25.5.7使用DB Refs引用其他文档
25.5.8定义实例方法
25.5.9定义静态方法
25.6本章小结