第1篇 Node.js开发基础知识
第1章 Node.js概述 2
1.1 Node.js简介 2
1.1.1 Node.js是什么 2
1.1.2 Node.js能做什么 3
1.1.3 Node.js架构原理 6
1.1.4 Node.js的发展历程 7
1.2 Node.js的安装配置 8
1.2.1 在Windows中安装Node.js 8
1.2.2 在Linux中安装Node.js 10
1.3 编写第一个Node.js程序 11
1.3.1 创建Node.js应用 11
1.3.2 运行Node.js应用 12
1.4 开发工具及其调试 13
1.4.1 安装Visual Studio Code 13
1.4.2 调试Node.js程序 16
1.5 创建Web服务器案例 18
1.6 本章小结 19
第2章 Node.js模块化管理 20
2.1 JavaScript模块化 20
2.1.1 什么是模块化 20
2.1.2 模块化的发展史 22
2.1.3 CommonJS规范 25
2.1.4 ES 6模块化规范 27
2.2 Node.js模块分类 30
2.2.1 核心模块 30
2.2.2 自定义模块 31
2.2.3 第三方模块 32
2.3 NPM包管理器 33
2.3.1 NPM简介 33
2.3.2 使用NPM管理模块 34
2.3.3 使用YARN管理模块 37
2.4 本章小结 40
第3章 JavaScript基础知识 41
3.1 JavaScript语法基础 41
3.1.1 JavaScript简介 41
3.1.2 变量与数据类型 42
3.1.3 运算符 44
3.1.4 表达式及语句 48
3.2 程序控制结构 48
3.2.1 分支结构 48
3.2.2 循环结构 50
3.3 函数的定义与使用 53
3.3.1 函数的声明与调用 53
3.3.2 函数的参数 54
3.3.3 函数的返回值 56
3.3.4 函数的注释 56
3.4 常用的内置对象 57
3.4.1 数组Array 57
3.4.2 数学对象Math 63
3.4.3 日期对象Date 65
3.4.4 字符串String 66
3.5 ES 6+新增的语法 67
3.5.1 变量和常量 67
3.5.2 解构赋值 68
3.5.3 扩展运算符 69
3.5.4 字符串新增的方法 69
3.5.5 数组新增的方法 70
3.5.6 对象新增的方法 71
3.5.7 箭头函数 72
3.5.8 Set和Map 72
3.5.9 Class类及其继承 73
3.5.10 Promise和Async 74
3.6 本章小结 75
第4章 Node.js的内置模块 76
4.1 Node.js模块 76
4.1.1 module模块 76
4.1.2 global全局变量 77
4.1.3 Console控制台 78
4.1.4 Errors错误模块 80
4.2 Buffer缓冲区 83
4.2.1 缓冲区与TypeArray 83
4.2.2 Buffer类 84
4.3 child_process子进程 87
4.3.1 创建子进程 87
4.3.2 父进程和子进程间的通信 89
4.4 events事件触发器 90
4.4.1 事件循环 90
4.4.2 EventEmitter类 91
4.5 timmers定时器 95
4.5.1 Node.js中的定时器 95
4.5.2 调度定时器 95
4.6 path路径 96
4.7 fs文件系统 98
4.7.1 fs模块简介 98
4.7.2 文件的基本操作 101
4.8 NET网络 105
4.8.1 net模块简介 105
4.8.2 TCP服务器 106
4.9 dgram数据报 108
4.9.1 dgram模块简介 108
4.9.2 UDP服务器 108
4.10 超文本传输协议模块 110
4.10.1 HTTP模块简介 110
4.10.2 HTTP服务器 111
4.11 本章小结 113
第5章 数据库操作 114
5.1 Node.js操作MySQL 114
5.1.1 安装MySQL 114
5.1.2 MySQL的基本命令 119
5.1.3 在Node.js中使用MySQL 122
5.2 Node.js操作MongoDB 128
5.2.1 安装MongoDB 128
5.2.2 MongoDB的基本命令 133
5.2.3 在Node.js中操作MongoDB 138
5.3 Node.js操作Redis 142
5.3.1 安装Redis 142
5.3.2 Redis的基本命令 145
5.3.3 在Node.js中使用Reids 151
5.4 本章小结 153
第2篇 Node.js开发主流框架
第6章 Express框架 156
6.1 Express框架入门 156
6.1.1 Express简介 156
6.1.2 Express的基本用法 157
6.1.3 托管静态资源 161
6.2 Express路由 163
6.2.1 路由简介 163
6.2.2 路由的用法 165
6.3 Express中间件 166
6.3.1 中间件简介 166
6.3.2 中间件的分类 170
6.3.3 自定义中间件 175
6.4 使用Express编写接口 178
6.4.1 Web开发模式 178
6.4.2 编写RESTfull API 179
6.4.3 跨域问题 182
6.4.4 身份认证 191
6.5 常用的API 205
6.5.1 模块方法 205
6.5.2 Application对象 205
6.5.3 Request对象 206
6.5.4 Response对象 206
6.5.5 Router对象 206
6.6 本章小结 206
第7章 Koa框架 207
7.1 Koa简介 207
7.1.1 Koa框架的发展 207
7.1.2 创建Hello World程序 208
7.1.3 Koa与Express的区别 209
7.2 Context上下文对象 210
7.2.1 Context上下文 210
7.2.2 Request对象 211
7.2.3 Response对象 212
7.3 Koa路由 213
7.3.1 路由的基本用法 213
7.3.2 接收请求数据 214
7.3.3 路由重定向 218
7.4 Koa中间件 219
7.4.1 中间件的概念 219
7.4.2 静态资源托管 223
7.4.3 常用的中间件 225
7.4.4 异常处理 226
7.5 本章小结 230
第8章 Egg框架 231
8.1 Egg简介 231
8.1.1 Egg是什么 231
8.1.2 第一个Egg程序 233
8.2 Egg路由 236
8.2.1 定义路由 236
8.2.2 RESTfull风格的路由 237
8.2.3 获取参数 238
8.2.4 获取表单内容 240
8.2.5 路由重定向 241
8.3 Egg控制器 242
8.3.1 编写控制器 243
8.3.2 获取HTTP请求参数 245
8.3.3 调用Service层 247
8.3.4 发送HTTP响应 247
8.4 Egg的Service 248
8.4.1 Service的概念 248
8.4.2 使用Service 249
8.5 Egg中间件 250
8.5.1 编写中间件 251
8.5.2 使用中间件 252
8.6 Egg插件 254
8.6.1 插件简介 254
8.6.2 常用的插件 255
8.6.3 数据库插件 256
8.7 本章小结 259
第3篇 项目实战
第9章 百果园微信商城需求分析 262
9.1 需求分析 262
9.2 技术选型 264
9.3 环境准备 264
9.4 本章小结 266
第10章 百果园微信商城架构设计 267
10.1 系统架构 267
10.2 数据库设计 269
10.3 本章小结 274
第11章 百果园微信商城后端API服务 275
11.1 项目搭建 275
11.1.1 项目初始化 275
11.1.2 封装返回JSON 276
11.1.3 路由模块化配置 277
11.2 接口安全校验 278
11.2.1 Token校验 278
11.2.2 登录校验 281
11.2.3 接口授权 288
11.3 登录接口 290
11.3.1 数据库的初始化 290
11.3.2 用ORM实现查询 292
11.3.3 密码加密 295
11.3.4 日志封装 296
11.4 接口权限验证 298
11.4.1 拦截模块的方法 298
11.4.2 权限验证通过的处理 300
11.4.3 权限验证失败的处理 303
11.4.4 权限验证的实现 304
11.5 商品分类管理API 310
11.5.1 添加商品分类 310
11.5.2 获取分类列表 312
11.5.3 获取指定的分类 316
11.5.4 修改指定的分类 317
11.5.5 删除指定的分类 318
11.6 分类参数管理API 319
11.6.1 添加分类参数 319
11.6.2 获取分类参数列表 321
11.6.3 获取分类参数详情 322
11.6.4 修改分类参数 323
11.6.5 删除分类参数 324
11.7 商品管理API 325
11.7.1 上传图片 326
11.7.2 添加商品 327
11.7.3 获取商品列表 339
11.7.4 删除商品 341
11.7.5 修改商品 342
11.7.6 获取商品详情 343
11.8 小程序端API 344
11.8.1 获取最新商品列表 345
11.8.2 获取商品详情 346
11.8.3 获取分类列表 346
11.8.4 根据分类获取商品 347
11.9 本章小结 347
第12章 百果园微信商城Vue管理后台 348
12.1 Vue项目搭建 348
12.1.1 创建项目 348
12.1.2 搭建路由 349
12.1.3 使用Element-UI制作组件 353
12.2 登录页面及其功能的实现 353
12.2.1 安装并设置Axios 353
12.2.2 实现登录和退出功能 354
12.3 分类管理功能的实现 357
12.3.1 获取分类列表 357
12.3.2 添加分类 358
12.3.3 修改分类 360
12.3.4 删除分类 362
12.4 分类参数管理功能的实现 363
12.4.1 获取分类参数列表 363
12.4.2 添加分类参数 365
12.4.3 修改分类参数 366
12.4.4 删除分类参数 367
12.4.5 添加参数标签 368
12.4.6 删除参数标签 369
12.5 商品管理功能的实现 369
12.5.1 获取商品列表 369
12.5.2 搜索商品 371
12.5.3 添加商品 371
12.5.4 删除商品 377
12.5.5 修改商品 377
12.6 本章小结 382
第13章 百果园微信商城小程序 383
13.1 搭建项目 383
13.1.1 项目创建及配置 383
13.1.2 配置tabBar 384
13.1.3 制作静态页面 385
13.2 封装公共功能 392
13.2.1 封装公共变量 392
13.2.2 封装网络请求 392
13.3 首页 393
13.3.1 首页功能说明 393
13.3.2 封装业务逻辑 393
13.3.3 获取接口数据 394
13.3.4 渲染页面数据 395
13.4 列表页 396
13.4.1 传递分类参数 396
13.4.2 接口数据渲染 396
13.5 详情页 398
13.5.1 传递商品参数 398
13.5.2 封装业务逻辑 398
13.5.3 获取商品数据 399
13.5.4 渲染商品数据 399
13.6 本章小结 401
第14章 百果园微信商城项目部署与发布 402
14.1 Node.js接口部署 402
14.2 小程序发布 405
14.3 管理后台部署 408
14.4 本章小结 409
第15章 百果园微信商城性能优化初探 411
15.1 Node.js程序优化 411
15.2 小程序优化 412
15.3 Vue程序优化 414
15.4 本章小结 416