第一篇 Node js概述和开发环境的搭建 3
第1章 Node.js介绍 3
1.1 Node.js简介 3
1.2 Node.js的发展历史和特点 4
1.2.1 Node.js发展历史 4
1.2.2 Node.js未来版本规划 5
1.2.3 Node.js的结构 6
1.2.4 Node.js v10的特点及新变化 7
1.2.5 Node.js的应用场景 9
1.3 Node.js在中国的发展 10
1.3.1 Node.js中文资源汇总 11
1.3.2 Node.js的发展和未来 11
1.4 温故知新 12
第2章 部暑Node.js开发环境 13
2.1 在Windows 10下部署Node.js开发环境 13
2.1.1 使用安装包安装Node.js 14
2.1.2 测试Node.js开发环境 16
2.2 在Linux下部署Node.js开发环境 18
2.2.1 通过源码安装Node.js 18
2.2.2 通过包管理器安装Node.js 19
2.3 在Mae OS X下部署Node.js开发环境 20
2.3.1 使用.dmg安装包进行安装 20
2.3.2 使用NPM包管理器安装 20
2.4 在树莓派3下使用NVM安装Node.js 21
2.5 使用NPM进行Node包的安装 21
2.6 开发工具介绍 22
2.6.1 下载安装Sublime Text 3 23
2.6.2 Sublime Text操作界面 24
2.6.3 安装Sublime Text 3插件 25
2.6.4 安装Node.js插件 25
2.6.5 Sublime Text 3快捷键 26
2.7 温故知新 28
第二篇 Node.js编程基础 31
第3章 Node.js开发基础 31
3.1 JavaScript语法 31
3.1.1 变量 31
3.1.2 注释 34
3.1.3 数据类型 34
3.1.4 函数 35
3.1.5 闭包 37
3.2 命名规范与编程规范 39
3.2.1 命名规范 39
3.2.2 编程规范 40
3.3 Node.js的控制台 42
3.3.1 console对象下的各种方法 42
3.3.2 console.log()方法 42
3.3.3 console.info()、console.warn()和console.error()方法 43
3.3.4 console.dir()方法 44
3.3.5 console.time()和console.timeEnd()方法 44
3.3.6 console.trace()方法 45
3.3.7 console.table()方法 45
3.4 温故知新 46
第4章 Node.js中的包管理 47
4.1 支持最新版NPM 47
4.1.1 NPM常用命令 47
4.1.2 package.json文件 50
4.2 模块加载原理与加载方式 52
4.2.1 require导入模块 52
4.2.2 exports导出模块 53
4.3 Node.js核心模块 54
4.3.1 http模块——创建HTTP服务器和客户端 54
4.3.2 http2模块——创建HTTP/2服务器和客户端 58
4.3.3 url模块——url地址解析 61
4.3.4 url模块——WHATWG URL地址解析 63
4.3.5 querystring模块——查询字符串处理 64
4.4 Node.js常用模块 64
4.4.1 util模块——实用工具及功能 64
4.4.2 path模块——路径处理 67
4.4.3 dns模块 68
4.5 实战——爬取网页图片 69
4.5.1 项目目录与思路 70
4.5.2 下载第三方模块 70
4.5.3 配置网页地址及图片存放的文件夹 70
4.5.4 解析DOM得到图片地址 71
4.5.5 请求图片地址 71
4.5.6 图片文件的保存 72
4.5.7 启动项目 73
4.6 温故知新 73
第5章 文件系统 74
5.1 Node.js文件系统介绍 74
5.1.1 同步和异步 74
5.1.2 fs模块中的类和文件的基本信息 76
5.1.3 文件路径 77
5.2 基本文件操作 78
5.2.1 打开文件 78
5.2.2 关闭文件 79
5.2.3 读取文件 80
5.2.4 写入文件 81
5.3 利用async_hooks跟踪异步请求和处理 83
5.4 其他文件操作 85
5.5 实战——用IP地址来查询天气情况 87
5.5.1 项目思路 87
5.5.2 引入基础模块 88
5.5.3 解析IP地址信息 88
5.5.4 通过公共服务获取城市和天气信息 89
5.5.5 遍历IP地址 90
5.5.6 将结果写入weather.json 90
5.6 温故知新 91
第6章 Node.js网络开发 92
6.1 构建TCP服务器 92
6.1.1 使用Node.js创建TCP服务器 92
6.1.2 监听客户端的连接 93
6.1.3 查看服务器监听的地址 95
6.1.4 连接服务器的客户端数量 96
6.1.5 获取客户端发送的数据 97
6.1.6 发送数据给客户端 98
6.2 构建TCP客户端 100
6.2.1 使用Node.js创建TCP客户端 100
6.2.2 连接TCP服务器 101
6.2.3 获取从TCP服务器发送的数据 101
6.2.4 向TCP服务器发送数据 102
6.3 构建HTTP服务器 103
6.3.1 创建HTTP服务器 103
6.3.2 HTTP服务器的路由控制 105
6.4 利用UDP协议传输数据与发送消息 107
6.4.1 创建UDP服务器 107
6.4.2 创建UDP客户端 110
6.5 温故知新 113
第7章 Node.js数据库开发 114
7.1 使用mongoose连接MongoDB 114
7.1.1 MongoDB介绍 114
7.1.2 使用mongoose连接MongoDB 116
7.1.3 使用mongoose操作MongoDB 117
7.2 直接连接MongoDB 124
7.2.1 使用node-mongodb-native连接MongoDB 124
7.2.2 使用node-mongodb-native操作MongoDB 124
7.3 连接MySQL 131
7.3.1 MySQL介绍 131
7.3.2 Node.js连接MySQL 134
7.3.3 Node.js操作MySQL 135
7.4 实战——学生成绩录入系统 138
7.4.1 生成基本的项目结构 138
7.4.2 数据库设计 139
7.4.3 成绩录入路由开发 139
7.4.4 读取学生成绩路由开发 141
7.5 温故知新 142
第三篇 Node.js实践 145
第8章 前端框架 145
8.1 前端框架介绍——jQuery 145
8.1.1 jQuery介绍 145
8.1.2 使用jQuery选择器 146
8.1.3 使用jQuery进行DOM操作 148
8.2 前端框架介绍——React 151
8.2.1 React介绍 151
8.2.2 React的JSX语言 154
8.2.3 React的props和state 156
8.2.4 React的组件生命周期 159
8.3 实战——图书信息统计 162
8.3.1 生成基本的目录结构 162
8.3.2 基本的结构开发 163
8.3.3 信息图表的开发 165
8.4 温故知新 171
第9章 Node.js的框架介绍 172
9.1 Node.js框架整体介绍 172
9.1.1 MVC框架 172
9.1.2 全栈框架 173
9.1.3 REST API框架 174
9.1.4 其他框架 174
9.2 Express框架介绍 175
9.3 Meteor框架介绍 177
9.4 其他框架 177
9.4.1 Sails.js 177
9.4.2 Derby.js 178
9.4.3 Flatiron.js 178
9.4.4 Hapi 178
9.4.5 Mean.IO 179
9.4.6 Mojito 179
9.4.7 Socket Stream 179
9.4.8 Bearcat 180
9.5 如何选择适合自己的框架 180
9.5.1 选择框架时的考虑事项 180
9.5.2 选择框架的建议 181
9.6 温故知新 183
第10章 Node.js单元测试与新增特性 184
10.1 单元测试介绍 184
10.2 使用单元测试模块Mocha 184
10.2.1 Mocha介绍 185
10.2.2 使用断言库should.js 190
10.2.3 测试异步方法 193
10.2.4 路由测试 194
10.2.5 测试覆盖率 195
10.2.6 使用Travis-cli 197
10.3 Node.js v10中实现异步请求的单元测试 197
10.4 温故知新 201
第11章 其他应用部署相关 202
11.1 使用Nginx 202
11.1.1 在Linux下安装Nginx 203
11.1.2 在Windows下安装Nginx 203
11.1.3 Nginx的配置 204
11.1.4 使用Nginx部署网站 210
11.2 Yarn——新的包管理工具 212
11.3 使用PM2 214
11.4 使用Koa 216
第四篇 Node.js项目案例 221
第12章 使用Express开发个人博客系统 221
12.1 项目准备 221
12.1.1 项目概述 221
12.1.2 前端界面设计 221
12.1.3 数据库设计 223
12.2 项目开发 225
12.2.1 快速生成一个项目 225
12.2.2 实现登录页面 227
12.2.3 实现博客首页 234
12.2.4 博客文章内容页的实现 242
12.2.5 博客文章发布的实现 246
12.2.6 博客友情链接的实现 252
12.2.7 关于博客页面的实现 254
12.2.8 博客404页面的实现 255
12.2.9 博客侧边栏的优化 256
12.2.10 博客修改文章的实现 258
12.2.11 博客删除文章的实现 263
12.2.12 博客文章分页的实现 265
12.3 项目总结 268
第13章 使用Meteor+MongoDB开发任务清单 269
13.1 项目准备 269
13.1.1 Meteor和MongoDB的安装 269
13.1.2 项目设计 271
13.2 项目开发 272
13.2.1 项目展示功能开发 272
13.2.2 项目页面美化 274
13.2.3 项目数据库开发 276
13.2.4 项目操作逻辑开发 278
13.3 发布与订阅 282
13.4 项目总结 286
第14章 开发和发布一个Node.js包 287
14.1 Node.js包的设计 287
14.2 发布到NPM上 294
14.3 图标和徽章 296
14.4 Node.js v10中的N-API应用 298
14.4.1 N-API介绍 298
14.4.2 N-API环境准备 299
14.4.3 编写扩展 299
14.4.4 编译扩展 300
14.4.5 调用扩展 300
14.5 总结 300