新书速览|NestJS全栈开发解析:快速上手与实践

《NestJS全栈开发解析:快速上手与实践》

本书内容

《NestJS全栈开发解析:快速上手与实践》旨在帮助读者快速掌握NestJS(简称Nest)开发,并应用于实战项目。本书共10章,首先介绍基本概念,为读者打下坚实的知识基础。接着,通过简洁的代码示例进行知识点的串联讲解,帮助读者快速克服学习瓶颈。最终,通过实践能力和工程思维的培养,帮助读者将知识从线性结构转变为网状结构,形成以Nest为基础的全栈知识体系。

本书作者

温健民,毕业于广东海洋大学计算机系,拥有5年前端开发经验,先后在某互联网公司担任前端工程师和前端技术leader职位。在Vue、React以及前端工程化方面有着深入的研究。同时是掘金技术博主,Nest技术爱好者,也是hello-algo算法开源项目的贡献者。

本书读者

《NestJS全栈开发解析:快速上手与实践》采用通俗易懂的点线面知识构建方式进行讲解,适合从事前端开发和Node.js开发的工程师学习,同时也适合有意向学习Nest全栈知识的开发者

本书目录

第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

编辑推荐

《NestJS全栈开发解析:快速上手与实践》是一本深入浅出的指南,旨在帮助读者系统地学习NestJS框架的基础知识和高级应用,以及如何将其应用到实际项目中。《NestJS全栈开发解析:快速上手与实践》内容丰富、实用性强,涵盖了NestJS的核心概念、数据库编程、身份验证与授权、Redis缓存、Docker部署等关键内容,同时通过实战案例帮助读者将所学知识转化为实际项目应用。适合Node.js开发从业者和渴望学习全栈知识的前端开发人员阅读,也可作为培训机构及大中专教学用书。如果您希望深入了解NestJS,并将其运用于实际项目中,那么这本书将是您的不二选择。

本文摘自《NestJS全栈开发解析:快速上手与实践》,获出版社和作者授权发布。

NestJS全栈开发解析(快速上手与实践)——jd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/143044.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

chapter15-泛型——(泛型语法)——day20

目录 554-泛型引入 555-泛型入门 556-泛型入门 557-泛型应用实例 558/9-泛型使用细节 560-泛型课堂练习 554-泛型引入 555-泛型入门 556-泛型入门 泛型先泛再型 557-泛型应用实例 泛型一旦指定了,编译器就会按照指定来约束传入类型 558/9-泛型使用细节 560-泛…

算法训练——day15数组交集(是否去重)

349. 两个数组的交集 给定两个数组 nums1 和 nums2 ,返回 它们的 交集。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 示例 1: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[2]示例 2: 输入…

Java SE基础知识详解:源于技术书籍的深度解读

写在前面 ⭐️在无数次的复习巩固中,我逐渐意识到一个问题:面对同样的面试题目,不同的资料来源往往给出了五花八门的解释,这不仅增加了学习的难度,还容易导致概念上的混淆。特别是当这些信息来自不同博主的文章或是视…

【C语言零基础入门篇 - 9】:文件操作

文章目录 文件操作文件的简介指向指针的文件文件的打开方式字符的读取和存储数据的读取和存储 文件操作 文件的简介 一、什么是文件? 文件有不同的类型,主要有两种文件: (1)程序文件。(2)数据…

python基础(1)pyenv安装和对Django使用

pyenv安装 pyenv主要针对类 Unix 系统(如 Linux、macOS)用户,pyenv-win 是专为 Windows 开发的 pyenv 版本,允许您在不使用 WSL 的情况下管理多个 Python 版本和虚拟环境。 建议Git Bash: Powershell或Git Bash&…

攻防实战-nacos新洞如何反弹和注入内存马

攻防实战-nacos新洞如何反弹和注入内存马 起因 ‍‍‍‍hw中,遇到2个nacos还在测试nacos的yaml漏洞时候,突然有人发了0day.不过网上的师傅好像都没有继续下一步. 本地搭建了windows和linux先本地测试了一下. 测试 ‍‍总体分为两步,第一步 http://ip/nacos/v1/cs/ops/data/…

基于windows下docker安装HDDM并运行

安装主要教程 如何安装HDDM(基于windows下 docker 和 linux) | 传鹏的实验室 (chuan-peng-lab.netlify.app) 安装时遇到的问题 1.下载完docker安装包,安装提示不适合本电脑 解决办法: 第一步:开启CPU虚拟化 Windows电脑如何开启CPU虚拟化…

【C51】独立按键控制LED灯

1.简介 在单片机应用系统中,常常使用轻触按键组成键盘。轻触按键具有自动回弹的特点,即按下按键,两个触点接通,放开按键,两个触点断开。轻触按键的外形及电路符号如图,通常轻触按键有4个引脚,4个…

Flink系列知识之:Checkpoint原理

Flink系列知识之:Checkpoint原理 在介绍checkpoint的执行流程之前,需要先明白Flink中状态的存储机制,因为状态对于检查点的持续备份至关重要。 State Backends分类 下图显示了Flink中三个内置的状态存储种类。MemoryStateBackend和FsState…

RTMP协议在无人机巡检中的应用场景

为什么要用无人机巡检 好多开发者对无人机巡检技术方案,相对陌生,实际上,无人机巡检就是利用无人机对特定区域或设施进行定期或不定期的检查。这种巡检方式相比传统的人工巡检具有显著的优势,包括速度快、覆盖广、风险低、准确性…

出厂非澎湃OS手机解BL锁

脚本作者:酷安mlgmxyysd 脚本项目链接:https://github.com/MlgmXyysd/Xiaomi-HyperOS-BootLoader-Bypass/ 参考 B站作者:蓝空穹 https://www.bilibili.com/read/cv33210124/ 其他参考:云墨清风、水墨青竹、Magisk中文网 决定解BL…

【每日刷题】Day124

【每日刷题】Day124 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. LCR 079. 子集 - 力扣(LeetCode) 2. 1863. 找出所有子集的异或总和再求和 …

滑动窗口(6)_找到字符串中所有字母异位词

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 滑动窗口(6)_找到字符串中所有字母异位词 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论&#x1f4…

Jetbrains开发工具使用通义灵码

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、安装二、使用步骤1.模型选择2.存在的问题 总结 前言 之前用过tabnine等AI工具,tabnine还行,有免费版,但是效果有限&…

element-ui 日期选择器设置禁用日期

element-ui 日期选择器设置禁用日期 效果图如下: 2024-09-01 到2024-09-18之间的日期都不可选 2024-01-01之前的日期都不可选 官方文档中 picker-options 相关的介绍 实现功能: ​ 某仓库有限制最大可放置资产数量,且资产出借和存放都有…

编码实现:求整数存储在内中的二进制中1的个数

//编码实现&#xff1a;求整数存储在内中的二进制中1的个数 #include<stdio.h> int ejz(unsigned int n) {int count 0;while (n){if (n % 2 1)count;n n / 2;}return count; } int main() {int num 0;printf("请输入一个整数&#xff1a;");scanf("%…

一站式费用管理系统 破解企业财务困局

在企业的运营过程中&#xff0c;财务管理常常面临着复杂多样的挑战。尤其是在处理案件的应收应付、内部提成以及合作方分成等事务时&#xff0c;其复杂性让财务人员倍感压力。这些财务环节相互交织&#xff0c;每一个环节都可能存在数据统计不准确、流程繁琐等问题。启服云费用…

Python绘图时【坐标轴文字相互重叠/覆盖】问题的解决方法【matplotlib】

Python绘图时【坐标轴文字相互重叠/覆盖】问题的解决方法 有时候我们使用python程序的matplotlib包&#xff0c;生成一些柱状图或折线图&#xff0c;会出现坐标文字放不下&#xff0c;相互覆盖的问题。&#xff08;比如用下面的代码生成的图片&#xff09; import matplotlib…

Python 从入门到实战21(面向对象简介)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们讨论了函数的相关知识。今天我们将学习一下面向对象…

微服务配置中心介绍

在微服务架构中&#xff0c;配置中心是一个非常重要的组件&#xff0c;它负责管理所有服务的配置信息&#xff0c;使得配置管理变得更加集中和动态。配置中心能够极大地提高微服务架构的灵活性和可维护性。 为什么需要配置中心&#xff1f; 在传统的单体应用中&#xff0c;配置…