新書推薦:
《
千万别喝南瓜汤(遵守规则绘本)
》
售價:NT$
204.0
《
大模型启示录
》
售價:NT$
510.0
《
东法西渐:19世纪前西方对中国法的记述与评价
》
售價:NT$
918.0
《
养育男孩:官方升级版
》
售價:NT$
230.0
《
小原流花道技法教程
》
售價:NT$
500.0
《
少女映像室 唯美人像摄影从入门到实战
》
售價:NT$
505.0
《
詹姆斯·伍德系列:不负责任的自我:论笑与小说(“美国图书评论奖”入围作品 当代重要文学批评家詹姆斯·伍德对“文学中的笑与喜剧”的精湛研究)
》
售價:NT$
398.0
《
武当内家散手
》
售價:NT$
230.0
|
編輯推薦: |
《NestJS全栈开发解析:快速上手与实践》是一本深入浅出的指南,旨在帮助读者系统地学习NestJS框架的基础知识和高级应用,以及如何将其应用到实际项目中。《NestJS全栈开发解析:快速上手与实践》内容丰富、实用性强,涵盖了NestJS的核心概念、数据库编程、身份验证与授权、Redis缓存、Docker部署等关键内容,同时通过实战案例帮助读者将所学知识转化为实际项目应用。适合Node.js开发从业者和渴望学习全栈知识的前端开发人员阅读,也可作为培训机构及大中专教学用书。如果您希望深入了解NestJS,并将其运用于实际项目中,那么这本书将是您的不二选择。
|
內容簡介: |
《NestJS全栈开发解析:快速上手与实践》旨在帮助读者快速掌握NestJS(简称Nest)开发,并应用于实战项目。本书共10章,首先介绍基本概念,为读者打下坚实的知识基础。接着,通过简洁的代码示例进行知识点的串联讲解,帮助读者快速克服学习瓶颈。最终,通过实践能力和工程思维的培养,帮助读者将知识从线性结构转变为网状结构,形成以Nest为基础的全栈知识体系。
《NestJS全栈开发解析:快速上手与实践》采用通俗易懂的点线面知识构建方式进行讲解,适合从事前端开发和Node.js开发的工程师学习,同时也适合有意向学习Nest全栈知识的开发者。
|
關於作者: |
温健民,毕业于广东海洋大学计算机系,拥有5年前端开发经验,先后在某互联网公司担任前端工程师和前端技术leader职位。在Vue、React以及前端工程化方面有着深入的研究。同时是掘金技术博主,Nest技术爱好者,也是hello-algo算法开源项目的贡献者。
|
目錄:
|
第1部分 基础篇
第1章 需要提前掌握的知识 2
1.1 Node中的请求与响应对象 2
1.1.1 原生Node处理HTTP请求 2
1.1.2 Express处理HTTP请求 4
1.1.3 Nest处理HTTP请求 7
1.2 TypeScript基础与应用 7
1.2.1 TypeScript编译 8
1.2.2 TypeScript类型系统 9
第2章 Nest初识 15
2.1 什么是Nest 15
2.1.1 Nest概述 15
2.1.2 Nest的主要特点 15
2.1.3 Nest的应用场景 16
2.2 快速上手Nest CLI 16
2.2.1 Nest CLI的安装 16
2.2.2 创建项目 17
2.2.3 生成指定的代码片段 19
2.2.4 构建应用 22
2.2.5 启动开发调试 24
2.2.6 查看项目信息 25
2.3 创建第一个Nest应用 25
2.3.1 生成后端项目 26
2.3.2 生成前端项目 26
2.3.3 准备工作 27
2.3.4 运行结果 29
2.3.5 模块化开发 30
2.4 Nest的AOP架构理念 32
2.4.1 MVC架构概述 32
2.4.2 AOP解决的问题 33
2.4.3 AOP在Nest中的应用 33
2.5 IoC思想解决了什么问题 40
2.5.1 IoC核心思想概述 40
2.5.2 IoC在Nest中的应用 41
2.6 学会调试Nest应用 44
2.6.1 Chrome DevTools调试 44
2.6.2 VS Code调试 46
2.6.3 扩展调试技巧 48
第3章 Nest核心概念介绍 51
3.1 贯穿全书的装饰器 51
3.1.1 基本概念 51
3.1.2 装饰器的种类 51
3.1.3 Nest中的装饰器 59
3.2 井然有序的模块化 60
3.2.1 基本概念 60
3.2.2 创建模块 61
3.2.3 共享模块 62
3.2.4 全局模块 64
3.2.5 动态模块 65
3.3 控制器与服务的默契配合 66
3.3.1 基本概念 66
3.3.2 Controller管理请求路由 67
3.3.3 Controller处理请求参数与请求体 68
3.3.4 Service处理数据层 70
3.3.5 服务与服务提供者 71
3.4 耳熟能详的中间件 71
3.4.1 类中间件 71
3.4.2 函数式中间件 74
3.4.3 局部中间件 74
3.4.4 全局中间件 74
3.5 拦截器与RxJS知多少 75
3.5.1 基本概念 75
3.5.2 创建项目 76
3.5.3 拦截器的基本使用方法 76
3.6 数据之源守护者:管道 79
3.6.1 基本概念 79
3.6.2 内置管道 80
3.6.3 自定义管道 88
3.7 Nest实现文件上传 89
3.7.1 初识Multer 89
3.7.2 单文件上传 91
3.7.3 多文件上传 94
3.7.4 上传任意文件 98
3.7.5 文件验证 99
第2部分 进阶篇
第4章 Nest与数据库 102
4.1 快速上手MySQL 102
4.1.1 安装和运行 102
4.1.2 MySQL的常用命令 105
4.1.3 可视化操作MySQL 107
4.2 MySQL表之间的关系 112
4.2.1 一对一关系 112
4.2.2 一对多/多对一关系 119
4.2.3 多对多关系 121
4.3 快速上手TypeORM 126
4.3.1 基本概念 126
4.3.2 项目准备 126
4.3.3 创建模型及实体 126
4.3.4 定义数据列及类型 127
4.3.5 连接数据库 128
4.3.6 使用Repository操作CRUD 129
4.3.7 使用QueryBuilder操作CRUD 131
4.4 使用TypeORM处理多表关系 134
4.4.1 一对一关系 134
4.4.2 一对多/多对一关系 140
4.4.3 多对多关系 142
4.5 在Nest中使用TypeORM操作MySQL 144
4.5.1 项目准备 144
4.5.2 使用EntityManager操作实体 147
4.5.3 使用Repository操作实体 148
4.5.4 使用QueryBuilder操作实体 151
第5章 性能优化之数据缓存 154
5.1 快速上手Redis 154
5.1.1 安装和运行 154
5.1.2 Redis的常用命令 155
5.2 在Nest中使用Redis缓存 162
5.2.1 项目准备 162
5.2.2 Redis初始化 164
5.2.3 建表并构建缓存 165
5.2.4 运行代码 167
5.2.5 设置缓存有效期 169
5.2.6 选择合理的有效期 170
第6章 身份验证与授权 171
6.1 Cookie、Session、Token、JWT、SSO详解 171
6.1.1 什么是身份验证 171
6.1.2 什么是授权 172
6.1.3 什么是凭证 172
6.1.4 什么是Cookie 172
6.1.5 什么是Session 173
6.1.6 Session与Cookie的区别 173
6.1.7 什么是Token 174
6.1.8 什么是JWT 176
6.1.9 JWT与Token的区别 177
6.1.10 什么是SSO 177
6.2 基于Passport和JWT实现身份验证 180
6.2.1 基本概念 181
6.2.2 项目准备 181
6.2.3 用本地策略实现用户登录 182
6.2.4 用JWT策略实现接口校验 184
6.2.5 代码优化 188
6.3 基于RBAC实现权限控制 191
6.3.1 基本概念 191
6.3.2 数据表设计 192
6.3.3 项目准备 193
6.3.4 创建实体 194
6.3.5 启动服务 196
6.3.6 实现角色守卫控制 196
6.3.7 生成测试数据 200
6.3.8 测试效果 202
第7章 系统部署与扩展 203
7.1 快速上手Docker 203
7.1.1 初识Docker 203
7.1.2 安装Docker 204
7.1.3 Docker的使用 205
7.2 快速上手Dockerfile 209
7.2.1 Docker的基本概念 209
7.2.2 Dockerfile的基本语法 210
7.2.3 Dockerfile实践 210
第3部分 扩展篇
第8章 单元测试与端到端测试 216
8.1 重新认识单元测试 216
8.1.1 什么是单元测试 216
8.1.2 为什么大部分公司没有进行单元测试 217
8.1.3 为什么要编写单元测试 217
8.1.4 先编写单元测试还是先编写代码 218
8.1.5 测试驱动开发 219
8.2 在Nest中使用Jest编写单元测试 220
8.2.1 初识Jest 220
8.2.2 项目准备 223
8.2.3 编写测试用例 224
8.2.4 实现业务代码 225
8.2.5 重构代码 229
8.3 集成测试 230
8.3.1 编写测试用例 230
8.3.2 测试效果 232
8.4 端到端测试 232
8.4.1 编写测试用例 233
8.4.2 实现业务代码 235
第9章 日志与错误处理 237
9.1 如何在Nest中记录日志 237
9.1.1 为什么要记录日志 238
9.1.2 内置日志器Logger 238
9.1.3 定制日志器 240
9.1.4 记录日志的正确姿势 241
9.1.5 第三方日志器Winston 241
9.2 Winston日志管理实践 241
9.2.1 Winston的基础使用 242
9.2.2 本地持久化日志 244
9.3 面向切面日志统计实践 248
9.3.1 中间件日志统计 248
9.3.2 拦截器日志统计 249
9.3.3 过滤器日志统计 251
第4部分 Nest项目实战篇
第10章 数字门店管理平台开发 254
10.1 产品需求分析与设计 254
10.1.1 产品需求说明 254
10.1.2 功能原型图 255
10.2 技术选型与项目准备 262
10.2.1 前端技术选型 262
10.2.2 初始化前端项目 262
10.2.3 前端架构设计 263
10.2.4 后端技术选型 264
10.2.5 初始化后端项目 265
10.2.6 后端架构设计 266
10.3 API接口及数据库表设计 268
10.3.1 API接口功能划分 268
10.3.2 数据库设计 269
10.4 实现注册登录 273
10.4.1 页面效果展示 273
10.4.2 接口实现 281
10.5 实现用户与角色模块 290
10.5.1 页面效果展示 290
10.5.2 表关系设计 295
10.5.3 接口实现 299
10.6 实现商品与订单模块 303
10.6.1 页面效果展示 304
10.6.2 表关系设计 306
10.6.3 接口实现 307
10.7 基于Redis实现商品热销榜 315
10.7.1 页面效果展示 316
10.7.2 接口实现 317
10.8 实现活动模块与定时任务 320
10.8.1 页面效果展示 320
10.8.2 表关系设计 322
10.8.3 接口实现 323
10.9 使用Docker Compose部署项目 325
10.9.1 编写后端Docker Compose文件 325
10.9.2 编写Dockerfile文件 330
完结语:是终点,更是新的起点 334
一个小小的决定 334
时间的杠杆 334
结语 334
|
內容試閱:
|
互联网技术迅猛发展,前端技术更新迅速,业务场景变得越来越复杂。JavaScript语言从早期的网页脚本语言逐渐发展,基于Node.js的服务端框架和库为前端开发打开了新的视野。不同框架和库的设计思想和理念各有特色,它们针对不同场景设计,推动了Node.js领域的技术发展。
Nest是基于TypeScript的开源企业级框架,建立在Express之上,提供了一层抽象。它凭借模块化、强大的依赖注入系统和优秀的设计思想,成为许多Node.js开发者的首选。
本书致力于普及Nest从基础到实战的核心知识,对每个核心知识点通过理论结合代码示例的方式进行讲解。本书通过完整的项目实践,将带你快速上手Nest并将其应用于实际项目中,帮助开发者构建坚实的独立开发基础。
本书内容
本书采用循序渐进的行文模式,从前端基础知识到后端中间件的使用和开发,全面覆盖。内容分为基础篇、进阶篇、扩展篇和项目实战篇,每篇包含若干章节。
基础篇介绍了学习Nest所需的前置知识,包括Node.js的请求响应对象和TypeScript基础知识,然后介绍Nest的核心设计理念、创建和调试Nest应用,并结合实际代码示例深入解读Nest的核心概念。
进阶篇详细讲解了后端中间件服务,如MySQL数据库、Redis缓存等,并指导如何在Nest中集成和使用这些服务。此外,还介绍了企业级应用中实现身份验证与授权的方法,以及如何通过Docker高效部署和管理中间件服务。
扩展篇讨论了对系统稳定性至关重要的系统测试与日志管理,包括开发阶段的单元测试、集成测试、端对端测试等,以及生产应用阶段的日志统计实践。
项目实战篇提供了一个完整的数字门店管理平台开发实战案例。
配书资源
为了让读者能够更好地理解和实践所学的知识,本书提供了丰富的配书资源,包括源代码(本书中的代码示例都可以直接用于实际工作中)、PPT教学课件。扫码下述二维码可免费下载:
源代码 PPT
如果在学习和资源下载的过程中遇到问题,可以发送邮件至booksaga@126.com,邮件主题为“NestJS全栈开发解析:快速上手与实践”。
面向的阅读群体
本书主要面向所有前端和Node.js开发工程师,以及有意向学习全栈知识的IT专业人员。要求读者具备Node.js和TypeScript语言的基础。
如何使用这本书
希望本书能为你带来一段愉快的学习之旅。
如果你是Nest初学者或者想全面了解本书内容,建议按照章节顺序进行阅读和实践。对于有实际后端开发经验并且了解Nest开发的读者,可以选择感兴趣的章节阅读,因为每个章节的设计相对独立。
在学习本书的过程中,建议在阅读完每个知识点后,按照书中的代码案例进行实践,将其转化为自己的储备知识。如果遇到问题,建议首先调试分析问题所在,总结经验,然后可以与作者沟通解答疑惑。
希望本书能给你带来一段愉快的学习之旅。
致 谢
感谢清华大学出版社提供这次创作机会,编辑们花了大量时间与我沟通和修改。感谢这次相遇,没有这次相遇,我也无法以图文形式与大家交流,这本书也不会诞生。
感谢我的妻子Minnie在背后一如既往地支持我,她把家庭打理得井然有序,给了我足够的时间来完成创作。同时感谢我的儿子甜筒,他四个月大时我开始创作,他的懂事和健康成长让我深感欣慰。
感谢自己,成为时间的主人,在保证工作和休息的同时,利用每天3小时的通勤时间、1小时的午休时间,以及陪伴家人的间隙完成了本次创作;不断改变,拥抱不确定性,是为了能够有更多时间陪伴身边亲近的人。
感谢每一位阅读本书的读者朋友,你们的支持与反馈是我不断进步、持续创作的最大动力。
最后,由于笔者能力有限,书中知识点可能存在疏忽和遗漏,恳请读者指正。
编 者
2024年4月
|
|