《Node.js高级编程》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)特谢拉著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2013
  • ISBN:9787302344414
  • 页数:351 页
图书介绍:使用查询从文件中读写数据探讨了流、文件系统、网络和自动单元测试介绍如何读写数据流介绍构建TCP和HTTP服务器和客户端使用数据报、测试和调试模块和控制回调流展示如何使用Connect、Express和Socket.IO开发实时Web程序了解MySQL、CouchDB和MongoDB。

第Ⅰ部分 概述和安装 3

第1章 安装Node 3

1.1在Windows上安装Node 4

1.2在MAC OS X上安装Node 6

1.3使用源代码安装Node 7

1.3.1选择Node的版本 7

1.3.2下载Node源代码 7

1.3.3编译Node 8

1.3.4安装Node 8

1.3.5运行Node 8

1.4安装和应用Node包管理器 9

1.5本章小结 14

第2章 Node简介 15

2.1事件驱动编程风格介绍 16

2.2 Node和JavaScript如何简化异步应用程序的编写 17

2.2.1什么是闭包 17

2.2.2闭包如何辅助异步编程 18

2.3本章小结 19

第Ⅱ部分 Node核心API基础 23

第3章 加载模块 23

3.1理解Node如何加载模块 24

3.2导出模块 24

3.3加载模块 25

3.3.1加载核心模块 25

3.3.2加载文件模块 26

3.3.3加载文件夹模块 26

3.3.4从node modules文件夹加载 26

3.3.5缓存模块 27

3.4本章小结 28

第4章 应用缓冲区处理、编码和解码二进制数据 29

4.1创建缓冲区 30

4.2在缓冲区中获取和设置数据 30

4.3切分缓冲区 31

4.4复制缓冲区 32

4.5缓冲区解码 32

4.6本章小结 33

第5章 使用事件发射器模式简化事件绑定 35

5.1理解标准回调模式 35

5.2理解事件发射器模式 36

5.3理解事件类型 37

5.4应用事件发生器API 38

5.4.1使用.addListener()或.on()绑定回调函数 38

5.4.2绑定多个事件监听器 39

5.4.3使用.removeListener()从事件发射器中删除一个事件监听器 40

5.4.4使用.once()使回调函数最多执行一次 40

5.4.5使用.removeAllisteners()从事件发射器删除所有事件监听器 41

5.5创建事件发射器 41

5.5.1从Node事件发射器继承 41

5.5.2发射事件 42

5.6本章小结 42

第6章 使用定时器制定函数执行计划 45

6.1使用setTimeout推迟函数执行 46

6.2使用clearTimeout取消函数执行 46

6.3制定和取消函数的重复执行计划 47

6.4使用process.nextTick将函数执行推迟到下一轮事件循环 47

6.5阻塞事件循环 48

6.6退出事件循环 49

6.7使用setTimeout代替setInterval强制函数串行执行 49

6.8本章小结 50

第Ⅲ部分 文件、进程、流和网络 53

第7章 查询和读写文件 53

7.1处理文件路径 54

7.1.1规范化路径 54

7.1.2连接路径 54

7.1.3解析路径 55

7.1.4查找两个绝对路径之间的相对路径 55

7.1.5提取路径的组成部分 55

7.1.6确定路径是否存在 56

7.2 fs模块简介 57

7.3打开文件 58

7.4读取文件 58

7.4.1写入文件 59

7.4.2关闭文件 60

7.5本章小结 62

第8章 创建和控制外部进程 63

8.1执行外部命令 63

8.2生成子进程 68

8.2.1创建子进程 68

8.2.2监听子进程的输出数据 69

8.2.3向子进程发送数据 69

8.2.4当子进程退出时获得通知 71

8.3向进程发送信号并终止进程 72

8.4本章小结 73

第9章 读写数据流 75

9.1使用可读流 76

9.1.1等待数据 76

9.1.2暂停与恢复流 76

9.1.3了解流何时终止 77

9.2使用可写流 77

9.2.1将数据写入流 77

9.2.2等待流被清空 78

9.3考虑几个流的例子 78

9.3.1创建文件系统流 78

9.3.2理解网络流 80

9.4避免慢客户端问题以及 80

挽救服务器 80

9.4.1理解慢客户端问题 80

9.4.2避免慢客户端问题 81

9.4.3应用stream pipe()避免慢客户端问题与使用pipe()集成可读流和可写流 81

9.5本章小结 82

第10章 构建TCP服务器 83

10.1创建TCP服务器 83

10.1.1应用套接字对象 85

10.1.2理解空闲套接字 86

10.1.3设置保持运行 87

10.1.4应用延时或非延时 87

10.1.5监听连接 88

10.1.6关闭服务器 88

10.1.7处理错误 88

10.2构建一个简单的TCP聊天服务器 89

10.2.1接受连接 89

10.2.2从连接中读取数据 89

10.2.3聚合所有客户端 90

10.2.4广播数据 91

10.2.5删除被关闭的连接 91

10.2.6使用TCP聊天服务器 92

10.3本章小结 93

第11章 构建HTTP服务器 95

11.1理解http.ServerRequest对象 96

11.2理解http.ServerResponse对象 98

11.2.1写入响应头 98

11.2.2修改或设置响应头 98

11.2.3删除响应头 99

11.2.4写入一块响应主体 99

11.3以流的形式传送HTTP分块响应 99

11.3.1传送文件 99

11.3.2传送其他进程的输出 100

11.4关闭服务器 100

11.5示例1:构建提交静态文件的服务器 101

11.6示例2:使用HTTP分块响应和定时器 102

11.7本章小结 102

第12章 构建TCP客户端 103

12.1连接服务器 104

12.2发送和接收数据 104

12.3终止连接 105

12.4处理错误 106

12.5创建命令行TCP客户端的示例 106

12.5.1连接服务器 107

12.5.2向服务器发送命令行 107

12.5.3打印服务器消息 107

12.5.4在连接终止时重新连接 108

12.5.5关闭连接 110

12.5.6前述内容综合 111

12.6本章小结 112

第13章 创建HTTP请求 113

13.1创建GET请求 113

13.2使用其他HTTP动词 114

13.2.1查看响应对象 115

13.2.2获取响应主体 116

13.2.3以流的方式传送响应主体 116

13.3使用HTTP.Agent维护套接字池 116

13.4应用第三方请求模块简化HTTP请求 118

13.4.1安装和应用request模块 118

13.4.2创建测试服务器 119

13.4.3跟随重定向 121

13.4.4设置请求选项 122

13.4.5对请求体进行编码 125

13.4.6 流式传送 126

13.4.7使用Cookie Jar 127

13.5本章小结 127

第14章 使用用户数据报 129

14.1理解用户数据报 129

14.2理解用户数据报的使用 130

14.3构建数据报服务器 130

14.3.1监听消息 130

14.3.2测试服务器 131

14.3.3查看附加的消息信息 132

14.4创建简单的数据报回送服务器 132

14.4.1等待消息 132

14.4.2向发送端发回消息 132

14.4.3前述内容综合 133

14.5构建数据报客户端 133

14.5.1创建客户端 134

14.5.2发送消息 134

14.5.3关闭套接字 134

14.6创建一个简单的数据报命令行客户端 134

14.6.1读取命令行 135

14.6.2向服务器发送数据 135

14.6.3从服务器接收数据 135

14.6.4前述内容综合 136

14.7理解和使用数据报多播 136

14.7.1接收多播消息 137

14.7.2发送多播消息 137

14.7.3理解数据报最大容量 138

14.8本章小结 138

第15章 用TLS/SSL保证服务器的安全性 139

15.1理解私钥和公钥 139

15.1.1产生私钥 140

15.1.2产生公钥 140

15.2构建TLS服务器 140

15.2.1初始化服务器 141

15.2.2监听连接 141

15.2.3从客户端读取数据 142

15.2.4向客户端发送数据 142

15.2.5终止连接 142

15.3构建TLS客户端 142

15.3.1初始化客户端 143

15.3.2连接服务器 143

15.3.3验证服务器证书 143

15.3.4向服务器发送数据 144

15.3.5从服务器读取数据 144

15.3.6终止连接 144

15.4创建几个示例 144

15.4.1创建TLS聊天服务器 145

15.4.2创建TLS命令行聊天客户端 146

15.4.3验证客户端证书 147

15.5本章小结 148

第16章 用HTTPS保证HTTP服务器的安全性 149

16.1构建安全的HTTP服务器 149

16.1.1设置服务器选项 150

16.1.2监听连接 150

16.1.3验证HTTPS客户端证书 151

16.2创建HTTPS客户端 152

16.2.1初始化客户端 152

16.2.2创建请求 152

16.2.3验证HTTPS服务器证书 153

16.3本章小结 154

第Ⅳ部分 构建与调试模块及应用程序 157

第17章 测试模块及应用程序 157

17.1应用测试运行工具 157

17.1.1编写测试 158

17.1.2运行测试 159

17.2使用断言测试模块 159

17.2.1使用断言模块 159

17.2.2使用Node-Tap中的内置断言函数 161

17.3测试异步模块 163

17.4本章小结 166

第18章 调试模块及应用程序 167

18.1使用console.log 167

18.2使用Node内置调试器 169

18.3使用Node检查器 173

18.4本章小结 175

第19章 控制回调流程 177

19.1理解飞去来器效应 177

19.2通过声明函数避免飞去来器效应 179

19.3使用ASYNC流程控制库 183

19.3.1串行执行 184

19.3.2并行执行 185

19.3.3连续传递 186

19.3.4排队 187

19.3.5迭代 189

19.3.6映射 190

19.3.7规约 191

19.3.8过滤 192

19.3.9检测 193

19.4本章小结 194

第Ⅴ部分 构建Web应用程序 197

第20章 构建和使用HTTP中间件 197

20.1理解Connect HTTP中间件框架 198

20.2构建自定义HTTP中间件 198

20.2.1创建异步中间件 199

20.2.2在中间件内部注册回调函数 201

20.2.3在中间件内处理错误 202

20.3使用捆绑在Connect中的HTTP中间件 206

20.3.1记录请求 206

20.3.2处理错误 208

20.3.3提交静态文件 209

20.3.4解析查询字符串 210

20.3.5解析请求主体 211

20.3.6解析Cookies 212

20.3.7使用会话 213

20.3.8其他可用的中间件 216

20.4本章小结 216

第21章 用Express.js创建Web应用程序 217

21.1初始化Express.js应用程序 218

21.2在应用程序中设置中间件 220

21.3路由请求 222

21.3.1处理路由 222

21.3.2使用会话 229

21.3.3使用路由中间件 234

21.4本章小结 238

第22章 使用Socket.IO创建通用的实时Web应用程序 241

22.1理解WebSockets如何工作 242

22.2使用Socket.IO创建WebSocket应用程序 243

22.2.1在服务器上安装和运行Socket.IO 243

22.2.2使用Socket.IO创建实时网络聊天应用程序 245

22.2.3扩展聊天应用程序 250

22.2.4检测连接断开 253

22.2.5将用户分隔到聊天室中 255

22.2.6使用名称空间 259

22.2.7使用Redis分布运行服务器端应用程序 260

22.3本章小结 263

第Ⅵ部分 连接数据库 267

第23章 使用node-mysql连接MySQL数据库 267

23.1应用库与MySQL数据库进行连接和通信 267

23.2向数据库添加数据时请记住安全性 269

23.3高效读取数据 272

23.4本章小结 276

第24章 使用Nano连接CouchDB数据库 277

24.1安装Nano 278

24.2连接和创建数据库 281

24.3存储文档 285

24.4创建和使用CouchDB视图 286

24.5将文件附加到CouchDB文档上 299

24.6本章小结 312

第25章 使用 Mongoose连接MongoDB数据库 313

25.1安装Mongoose 315

25.2理解Mongoose如何使用模型封装对数据库的访问 315

25.3连接MongoDB数据库 316

25.4定义模式 316

25.5定义模型 316

25.5.1使用验证器 326

25.5.2使用修改器 332

25.5.3使用取值器 333

25.5.4使用虚拟属性 334

25.5.5使用默认值 340

25.5.6定义索引 341

25.5.7使用DB Refs引用其他文档 343

25.5.8定义实例方法 349

25.5.9定义静态方法 350

25.6本章小结 351