第1篇 基础知识 2
第1章 Node.js入门 2
1.1 Node.js介绍 2
1.1.1什么是Node.js 3
1.1.2 Node.js的历史和发展过程 4
1.1.3 Node.js的特点和应用场景 7
1.1.4安装Node.js 8
1.1.5实战演练:使用Node.js搭建一个HTTP Server 10
1.2 NPM 11
1.2.1 NPM介绍 12
1.2.2 NPM模块结构 13
1.2.3使用NVM控制Node.js版本 16
1.2.4 Web代理工具NProxy 18
1.2.5实战演练:在npm.org上发布一个模块 20
1.3 Visual Studio Code编辑器 22
1.3.1 Visual Studio Code的安装及其功能 22
1.3.2使用Visual Studio Code调试Node.js 23
1.4本章小结 25
第2章 遇见Koa 26
2.1 Koa介绍 26
2.1.1 Koa的前世今生 26
2.1.2 Koa的安装及搭建(视频演示) 29
2.2 Context对象 30
2.2.1什么是Context对象 31
2.2.2常用属性和方法 31
2.3 Koa的中间件 35
2.3.1中间件概念 35
2.3.2实战演练:使用中间件获取响应时间(视频演示) 38
2.3.3常用Koa中间件介绍 39
2.4本章小结 43
第3章 路由 44
3.1路由介绍 44
3.1.1路由的概念 45
3.1.2实战演练:使用Koa中的简单路由自定义404页面 46
3.2 koa-router路由中间件 48
3.2.1 koa-router的安装和介绍 48
3.2.2 RESTful规范 48
3.2.3 koa-router用法(视频演示) 50
3.2.4通过koa-router实现接口的权限控制 55
3.3本章小结 58
第4章 HTTP 59
4.1 HTTP介绍 59
4.1.1 HTTP的诞生 59
4.1.2 URI和URL 62
4.1.3常用的HTTP状态码 63
4.1.4常用的请求方法 63
4.1.5常用的HTTP首部字段 64
4.2 HTTP/2 65
4.2.1采用二进制格式传输数据 65
4.2.2多路复用 65
4.2.3流的优先级 66
4.2.4首部压缩 66
4.2.5服务端推送 67
4.3 Node.js的querystring模块 67
4.3.1 querystring模块的使用 67
4.3.2 koa-router中的querystring(视频演示) 68
4.3.3实战演练:电影搜索列表 69
4.4 koa-bodyparser中间件 72
4.4.1 koa-bodyparser介绍 72
4.4.2 koa-bodyparser的使用(视频演示) 73
4.4.3实战演练:实现用户注册功能并进行数据解析 74
4.5本章小结 77
第2篇 应用实战 80
第5章 构建Koa Web应用 80
5.1 MVC 80
5.1.1 MVC的发展历程 81
5.1.2 MVC三层架构 81
5.1.3在Koa中实现MVC(视频演示) 83
5.2模板引擎 87
5.2.1什么是模板引擎 88
5.2.2常见的模板引擎有哪些 88
5.2.3 Nunjucks语法介绍 91
5.2.4 Nunjucks在Koa中的应用(视频演示) 96
5.3静态资源 97
5.3.1静态资源的类型 98
5.3.2 koa-static简介 99
5.3.3 koa-static常用配置(视频演示) 99
5.3.4实战演练:开发登录验证页面(视频演示) 100
5.4其他常用开发技巧 103
5.4.1简易版koa-json插件开发(视频演示) 103
5.4.2使用koa-multer中间件实现文件上传 106
5.5本章小结 110
第6章 数据库 111
6.1数据库介绍 111
6.1.1什么是数据库 111
6.1.2常见的数据库 113
6.2在Koa中应用MySQL数据库 114
6.2.1下载安装MySQL 114
6.2.2 Sequelize介绍 118
6.2.3实战演练:客户信息数据展现 122
6.3在Koa中应用MongoDB数据库 126
6.3.1下载安装MongoDB 126
6.3.2 Mongoose介绍 128
6.3.3实战演练:课程表数据展现 132
6.4在Koa中应用Redis数据库 135
6.4.1什么是Redis 135
6.4.2 Redis库介绍 138
6.4.3实战演练:持久化用户Session状态 141
6.5本章小结 145
第7章 单元测试 146
7.1 Chai断言库 147
7.1.1 Chai的介绍和安装 147
7.1.2 Chai的使用 147
7.2 Mocha框架 149
7.2.1 Mocha的介绍和安装 150
7.2.2 Mocha的使用 150
7.3 SuperTest测试RESTful API 154
7.3.1 SuperTest的介绍和安装 154
7.3.2 SuperTest的使用 154
7.4其他常用工具 155
7.4.1 Nock模拟服务器响应 156
7.4.2 Nyc测试覆盖率 157
7.5本章小结 159
第8章 优化与部署 161
8.1服务优化 161
8.1.1使用log4js记录日志(视频演示) 162
8.1.2自定义错误页(视频演示) 168
8.1.3异常捕获处理 173
8.1.4实战演练:优化Web开发项目结构(视频演示) 176
8.2部署 179
8.2.1 Node.js进程管理器PM2 179
8.2.2应用容器引擎Docker 182
8.2.3在线免费开源集成Travis CI 185
8.2.4利用Nginx部署HTTPS 189
8.3服务监控 192
8.3.1 Node.js服务性能指标及采集 192
8.3.2日志分析系统ELK 196
8.3.3 Keymetrics监控云服务 197
8.4本章小结 199
第3篇 项目实战:从零开始搭建微信小程序后台 203
第9章 云相册功能介绍和准备工作 203
9.1应用介绍 204
9.2小程序开发账户申请 206
9.3准备域名 209
9.3.1注册域名 209
9.3.2实名认证 211
9.3.3域名备案 212
9.4准备云服务器 216
9.5配置DNS解析 218
9.6本章小结 221
第10章 云相册服务开发 222
10.1小程序登录 222
10.2扫码登录 230
10.3小程序接口 236
10.3.1建立数据模型 236
10.3.2定义相册接口 238
10.3.3定义照片接口 242
10.4后台管理系统接口 244
10.4.1定义用户列表接口 244
10.4.2定义权限管理接口 246
10.4.3定义获取照片接口 247
10.4.4定义审核照片接口 249
10.5记录日志 249
10.6本章小结 252
第11章 云相册小程序开发 254
11.1项目介绍 254
11.2结合Redux实现小程序组件通信 259
11.3“个人中心”页面 264
11.4“新建相册”页面 267
11.4.1自定义组件用法介绍 267
11.4.2组件事件 269
11.4.3实现“新建相册”组件 270
11.5“相册列表”页面 272
11.5.1展示相册列表 273
11.5.2进入指定相册页面 274
11.5.3调用“新建相册”组件 274
11.6“照片列表”页面 275
11.6.1获取照片列表数据 276
11.6.2数据按日期分组 277
11.6.3上传照片到当前相册 278
11.6.4单击图片显示高清大图 279
11.7小程序审核发布 280
11.8本章小结 282
第12章 云相册后台管理系统 283
12.1整体架构 284
12.1.1基本文件结构 285
12.1.2前端模板结构 287
12.1.3路由设计 290
12.2相册列表及相关功能 292
12.2.1分类展示照片 293
12.2.2审核照片 297
12.2.3 HTTP通信 301
12.2.4分页控件 302
12.3用户列表及相关功能 304
12.4登录与鉴权 309
12.4.1登录 310
12.4.2鉴权中间件 315
12.5额外展开:SVG动画效果及其他 317
12.6本章小结 318
第13章 云相册服务器部署 319
13.1部署数据库 321
13.1.1存储设置 322
13.1.2安全策略 323
13.2部署Nginx 325
13.2.1安装OpenResty 325
13.2.2 Nginx配置 326
13.2.3插件扩展 328
13.3部署HTTPS 329
13.3.1强制HTTPS跳转 329
13.3.2添加WWW跳转 330
13.4配置Koa服务 331
13.5本章小结 332