Node.js应用开发实战教程(AI助学)(电子活页式)

前端开发;高职 -> 计算机 -> 网站开发;电子活页
分享 推荐 0 收藏 0 阅读 33
石范锋 , 陈承欢 (主编) 王福俊 , 梅玲玲 (副主编) 978-7-115-69790-5

关于本书的内容有任何问题,请联系 顾梦宇

1. 结构模块化·路径递进
构建“基础层→进阶层→实战层→工程化”四阶递进学习路径,对知识点按重要性与使用频率进行条理化取舍,形成重点突出、层次分明的模块化体系。
2. 训练层次化·梯度进阶
设置“验证程序(demo)→实例程序(case)→实战任务(task)”三级训练体系,从单一知识点验证到多技能综合应用,逐步提升读者的代码编写与问题解决能力。
3. 数智赋能·AI融合创新
创新引入【AI解惑】【AI破难】【AI智编】等工具模块,借助AI辅助释疑、编程指导与效果评估,推动教材开发与学习方式的智能化升级。
4. 纸数一体·线上线下协同
采用“纸质教材+电子活页”一体化设计,核心内容纸质呈现,完整代码与拓展资源通过二维码在线浏览,兼顾学习深度与资源广度。

内容摘要

本书合理选取并有序组织内容,兼顾灵活性与实用性。本书将Node.js理论知识与编程训练按照由易到难、由浅入深的规律进行编写,全书共9个模块,分别为Node.js环境搭建与第一个Node.js程序的创建,Node.js模块化编程与核心API应用,Node.js异步编程与事件驱动,Node.js文件系统编程与流处理,Node.js网络编程与API开发,Node.js数据库编程与ORM实践,基于Express的Web应用编程与工程化开发,综合性Web项目开发与分布式架构,Node.js程序测试、部署与性能监控。每个模块通过设置学习领会、引导训练、自主训练、在线测试4个学习阶段,引入了不同层次的编程技能训练环节。本书积极探索教材智能化创新形态,各个模块根据需要合理设置【AI解惑】【AI破难】【AI智编】等AI工具应用形式。
本书可作为普通高等院校Node.js应用开发相关课程的教材,也可作为相关企业及培训机构的教学参考资料。

目录

目 录

模块1 Node.js环境搭建与第一个Node.js程序的创建 1
学习领会 1
1.1 Node.js简介 1
1.1.1 Node.js是什么 1
1.1.2 Node.js的特点 1
1.1.3 Node.js的典型应用场景 2
1.2 搭建Node.js环境 3
1.2.1 在Windows操作系统上安装Node.js 3
1.2.2 安装开发工具Visual Studio Code 4
1.2.3 验证Node.js与npm安装 4
1.3 创建第一个Node.js程序 4
1.3.1 配置Node.js程序开发环境 4
1.3.2 编写Node.js程序代码 5
1.3.3 理解CommonJS模块规范 5
1.4 Node.js程序运行与调试 6
1.4.1 在VS Code中运行Node.js程序 6
1.4.2 调试Node.js程序 6
1.4.3 使用REPL交互式环境 6
1.4.4 使用nodemon实现热重载 7
引导训练 7
【实战任务1-1】 利用http模块搭建基础的HTTP服务 7
【实战任务1-2】 通过实例体验CommonJS规范中模块的导出和导入机制 11
自主训练 12
【实战任务1-3】 模块导出与导入 12
【实战任务1-4】 命令行参数解析 12
在线测试 12

模块2 Node.js模块化编程与核心API应用 13
学习领会 13
2.1 Node.js模块系统 13
2.1.1 ESM与CommonJS规范 13
2.1.2 自定义模块 14
2.1.3 使用import/require()导入模块 15
2.1.4 module.exports与exports的区别 15
2.1.5 模块加载顺序 16
2.1.6 模块缓存机制 16
2.2 Node.js全局对象 17
2.2.1 __filename与__dirname 18
2.2.2 console模块 18
2.2.3 process对象 21
2.3 Node.js核心模块 23
2.3.1 os模块 23
2.3.2 util模块 24
2.3.3 path模块 24
2.3.4 url模块 27
2.3.5 querystring模块 28
2.3.6 buffer模块 29
2.3.7 events模块 29
2.4 Node.js包管理与依赖管理 30
2.4.1 包与模块的区别 31
2.4.2 使用npm 31
2.4.3 使用Yarn 31
2.4.4 package.json配置解释 32
2.4.5 使用tsconfig.json或package.json配置路径映射 33
2.4.6 环境变量与配置文件管理 33
2.4.7 依赖版本控制 34
2.5 Node.js集成 34
2.5.1 Node.js与TypeScript集成 35
2.5.2 Node.js与WebAssembly集成 35
引导训练 36
【实战任务2-1】 将常用工具函数按功能拆分到不同模块 36
【实战任务2-2】 创建路径别名解析器 37
【实战任务2-3】 封装事件发射器,添加日志记录功能 38
【实战任务2-4】 创建简单计算器 39
自主训练 40
【实战任务2-5】 自定义模块导出与导入 40
【实战任务2-6】 使用path模块解析与拼接路径 40
【实战任务2-7】 通过EventEmitter实现事件触发与监听 40
在线测试 40

模块3 Node.js异步编程与事件驱动 41
学习领会 41
3.1 异步编程基础 41
3.1.1 异步编程概念 41
3.1.2 回调函数与回调地狱 42
3.2 事件机制 43
3.2.1 事件循环 43
3.2.2 事件监听与触发 43
3.2.3 EventEmitter类的自定义事件 44
3.3 定时器与执行顺序 46
3.3.1 setTimeout()与clearTimeout() 46
3.3.2 setImmediate()与clearImmediate() 46
3.3.3 process.nextTick() 47
3.4 事件循环的执行顺序 47
3.5 异步控制 48
3.5.1 Promise原理与链式调用 48
3.5.2 async/await语法糖 50
3.5.3 异步错误处理 51
3.5.4 全局未捕获异常处理 52
引导训练 53
【实战任务3-1】 创建异步任务调度器控制异步任务的并发数量 53
【实战任务3-2】 实现带指数退避的异步操作重试机制 54
【实战任务3-3】 使用async/await优化文件读取 56
自主训练 57
【实战任务3-4】 事件驱动编程 57
【实战任务3-5】 通过Promise链式调用输出文本文件的内容 58
【实战任务3-6】 通过Promise封装+async/await异步读取并输出文件内容 58
【实战任务3-7】 异步错误处理 58
在线测试 58

模块4 Node.js文件系统编程与流处理 59
学习领会 59
4.1 文件系统基础 59
4.1.1 fs模块 59
4.1.2 文件路径处理 60
4.1.3 文件模式 60
4.1.4 文件描述符与文件锁 61
4.2 文件操作 61
4.2.1 打开/关闭文件 61
4.2.2 获取文件或文件夹信息 62
4.2.3 读取文件 62
4.2.4 写入文件 63
4.2.5 文件夹操作 64
4.2.6 文件权限管理 65
4.3 流处理 66
4.3.1 可读流与可写流 66
4.3.2 管道操作 66
4.3.3 流式文件读写 67
4.3.4 大文件处理策略(流式压缩/解压缩) 69
4.4 文件进阶操作 69
4.4.1 文件遍历 69
4.4.2 文件监控与变更检测 70
4.4.3 操作JSON文件 71
4.4.4 处理GBK编码文件 72
引导训练 73
【实战任务4-1】 模拟异步数据流处理 73
【实战任务4-2】 CSV文件解析与输出 75
【实战任务4-3】 环境特定配置加载与输出 75
【实战任务4-4】 文件批量重命名 77
【实战任务4-5】 日志文件监控与分析 77
【实战任务4-6】 大文件分割与合并 79
自主训练 80
【实战任务4-7】 转换流处理 80
【实战任务4-8】 流处理实现大文件复制 80
【实战任务4-9】 对文件进行压缩并生成Gzip格式的压缩文件 80
在线测试 80

模块5 Node.js网络编程与API开发 81
学习领会 81
5.1 TCP/UDP编程 81
5.1.1 net模块应用 81
5.1.2 dgram模块应用 85
5.1.3 UDP文件上传 88
5.2 HTTP编程 90
5.2.1 使用原生http模块构建HTTP服务器 90
5.2.2 使用原生http模块构建http客户端 91
5.2.3 解析请求内容 92
5.2.4 使用Postman测试API 94
5.3 RESTful API设计规范 95
5.3.1 HTTP方法应用与资源命名约定 96
5.3.2 状态码的合理使用 97
5.4 实时通信 98
5.4.1 WebSocket服务器与客户端实现 99
5.4.2 Socket.IO集成 100
5.4.3 WebSocket鉴权与心跳机制 102
引导训练 106
【实战任务5-1】 创建与运行简单HTTP服务器 106
【实战任务5-2】 创建与运行简易静态文件服务器 107
【实战任务5-3】 实现简单的RESTful API服务器 109
【实战任务5-4】 RESTful API客户端调用其他API获取数据 110
【实战任务5-5】 创建基于WebSocket的简单聊天服务器 110
自主训练 112
【实战任务5-6】 创建一个HTTP服务器 112
【实战任务5-7】 创建一个HTTP代理服务器 112
【实战任务5-8】 实现回显功能的WebSocket服务器 112
在线测试 112

模块6 Node.js数据库编程与ORM实践 113
学习领会 113
6.1 MySQL操作 113
6.1.1 连接MySQL 113
6.1.2 增删改查操作 115
6.1.3 预处理语句防止SQL注入 117
6.2 数据库操作的异步控制 119
6.2.1 Generator与co模块 119
6.2.2 使用Promise包装MySQL操作 121
6.3 ORM框架 123
6.3.1 模型定义与数据类型映射 123
6.3.2 关联关系 125
6.3.3 Sequelize数据迁移与种子脚本 126
6.4 数据库事务管理 128
6.4.1 数据库事务管理概述 128
6.4.2 MySQL事务管理与隔离级别 129
6.5 数据库连接池管理与性能优化 131
6.5.1 连接池参数调优 131
6.5.2 连接泄漏检测与处理 132
引导训练 132
【实战任务6-1】 使用mysql2库连接MySQL数据库实现增删改查操作 132
【实战任务6-2】 通过数据库事务处理实现转出与转入指定金额 133
【实战任务6-3】 使用Sequelize操作SQLite内存数据库实现事务操作 135
自主训练 136
【实战任务6-4】 实现创建与操作数据表 136
【实战任务6-5】 实现简单的银行账户转账事务 136
【实战任务6-6】 在Node.js中使用SQLite3实现基本数据表操作 136
在线测试 136

模块7 基于Express的Web应用编程与工程化开发 137
学习领会 137
7.1 项目初始化 137
7.1.1 使用Express生成器创建项目 137
7.1.2 MySQL数据库连接池集成 138
7.2 基于Express的路由系统 142
7.2.1 查询参数解析 142
7.2.2 基础路由定义与参数捕获 143
7.2.3 路由中间件与权限控制 144
7.2.4 RESTful API路由设计 145
7.3 基于Express的中间件生态 146
7.3.1 中间件机制与执行顺序 147
7.3.2 常用中间件 148
7.3.3 定制日志中间件 149
7.3.4 JWT身份认证中间件 149
7.3.5 Express错误处理中间件 151
7.4 模板引擎与布局管理 152
7.4.1 EJS/Pug模板引擎 152
7.4.2 视图渲染与布局管理 153
7.5 会话管理与认证 155
7.5.1 基于Cookie的会话实现 155
7.5.2 基于Cookie/Session的认证 156
7.5.3 OAuth第三方登录集成 157
7.6 Express集成 158
7.6.1 Express与数据库集成 158
7.6.2 Express集成OpenAPI规范 161
7.6.3 统一错误处理 166
7.7 安全与性能优化 173
7.7.1 HTTPS配置与证书管理 173
7.7.2 CORS配置 174
7.7.3 数据库连接池与负载均衡 175
引导训练 176
【实战任务7-1】 文件上传与管理 176
【实战任务7-2】 用户注册表单验证与处理 178
【实战任务7-3】 构建基于JWT的认证系统 179
【实战任务7-4】 使用Express+MySQL连接池方式实现博客API服务 180
【实战任务7-5】 大文件分片上传 184
自主训练 186
【实战任务7-6】 RESTful API实现用户管理的创建和查询操作 186
【实战任务7-7】 创建日志中间件 186
【实战任务7-8】 使用Swagger工具生成API文档 186
【实战任务7-9】 实现限制请求速率的Express服务器 187
【实战任务7-10】 实现简单的视频文件分块上传 187
在线测试 187

模块8 综合性Web项目开发与分布式架构 188
学习领会 188
8.1 前后端数据交互 188
8.1.1 跨域处理 188
8.1.2 服务器端渲染与客户端渲染 190
8.1.3 文件上传与CDN集成 192
8.1.4 RESTful API与GraphQL的选择 194
8.2 Web项目架构设计 196
8.2.1 MVC与MVVM架构模式 196
8.2.2 分层设计 201
8.3 应用集成 201
8.3.1 与前端框架集成方案 201
8.3.2 消息队列实现异步通信 204
8.3.3 微服务基础 206
8.3.4 微服务架构简介 207
8.4 系统安全管理 210
8.4.1 输入验证与防XSS 210
8.4.2 密码哈希与加盐 210
8.4.3 安全头信息配置 211
引导训练 212
【实战任务8-1】 构建任务管理系统 212
【实战任务8-2】 构建实时聊天系统 213
【实战任务8-3】 实现MySQL订单系统 215
自主训练 219
【实战任务8-4】 使用Express和Multer实现文件的上传功能 219
【实战任务8-5】 构建简易的博客系统后端API 219
在线测试 219

模块9 Node.js程序测试、部署与性能监控 220
学习领会 220
9.1 Node.js程序测试策略 220
9.1.1 使用断言库 220
9.1.2 Mocha单元测试 221
9.1.3 Jest集成测试与E2E测试 225
9.1.4 使用REST Client测试工具 228
9.2 Node.js程序集成测试与E2E测试 231
9.2.1 使用Supertest测试HTTP接口 232
9.2.2 使用Jest模拟外部服务 233
9.3 Node.js程序部署与运维 236
9.3.1 部署方式 236
9.3.2 PM2进程管理 236
9.3.3 Docker容器化部署 237
9.3.4 Serverless部署 238
9.3.5 Nginx反向代理与负载均衡 239
9.3.6 Windows开机自启动 240
9.4 Node.js程序性能优化与监控 241
9.4.1 内存泄漏检测与分析 241
9.4.2 CPU性能瓶颈定位 242
9.4.3 使用ELK组件收集与分析日志 244
9.4.4 使用process.memoryUsage()监控内存 245
9.4.5 使用console.time()进行性能分析 246
9.4.6 使用APM工具监控性能 247
引导训练 248
【实战任务9-1】 使用Jest + Supertest测试Express API 248
【实战任务9-2】 使用Jest和Supertest实现单元测试和API集成测试 249
【实战任务9-3】 测试简易博客系统后端API 252
【实战任务9-4】 使用JSON文件测试订单API 253
自主训练 256
【实战任务9-5】 Mocha单元测试 256
【实战任务9-6】 Jest单元测试 256
【实战任务9-7】 使用console.time()进行性能分析 256
【实战任务9-8】 使用Puppeteer实施E2E测试 257
在线测试 258

读者评论

赶紧抢沙发哦!

我要评论

作者介绍

石范锋教授,博士,现任扬州工业职业技术学院信息工程学院院长,教育部职业院校中国特色学徒制教学指导委员会副秘书长,江苏省“青蓝工程”优秀教学团队负责人。先后获得全国职业院校技能大赛优秀工作者、江苏省技术能手和江苏省科技副总等荣誉称号。主持省部级课题多项,发表论文十余篇,其中SCI/EI收录论文5篇、中文核心1篇;获国家教学成果二等奖、省级教学成果一等奖等奖项;指导学生荣获中国国际大学生创新大赛金奖,并在省级职业院校技能大赛中多次斩获一、二等奖。

相关图书

人邮微信
本地服务
教师服务
教师服务
读者服务
读者服务
返回顶部
返回顶部