type
status
date
slug
summary
tags
category
icon
password
1. 前言
前段时间看完马伯庸的《食南之志》,就想要做一个厨子。一个好厨子不能只会端菜,更要会做菜,于是就有此系列——NestJS 厨子必修课。
这一篇,笔者并不打算讲实际的代码开发,而是由生活中的实际场景来理解后端开发过程,转变前端固有思维,先观察全局,然后在此基础上进入细节。
整个系列暂时规划如下:
- 后端的本质
- 搞定 CRUD
- 搞定数据库(Prisma + 共享模块)
- 搞定登录注册(Auth 模块 + JWT + 路由守卫)
- 搞定 API 文档(Swagger)
- 搞定 API 部署(多环境 + docker-compose)
笔者觉得如果你不想变成“bug 路由器”,不想听那些不专业的技术人员鬼扯👻,关注专栏就对了。
如果前端可以比喻为错综复杂的盘丝洞,充满了各种用户界面和交互细节,那么后端则可以比作是稳固的地基或支撑结构。后端是应用程序的服务器端,负责处理业务逻辑、数据库管理、服务器通信等,是整个应用架构的支撑,确保前端能够稳定运行。就像建筑的地基一样,后端需要稳固可靠,以支撑前端的复杂多变。
在开始之前,要讲清楚的是 CRUD 究竟是什么?所有书上都会说:
- C:create 创建(增)
- R:read 读取(查)
- U:update 更新(改)
- D:delete 删除(删)
2. 理解账房记录
让时间回到古代,我们来到一间账房,账房先生正抓耳挠腮,账本塞了满满一屋子。
账本显然用于记录商家往来的交易,上面记录着客人们各自在什么时候购买了什么东西、又买了多少、总共几钱等等。
2.1 入账
每次成交一笔记录时,账房先生总会在账本上记录一笔:
- 吴承恩《黑神话:悟空》标准版 x 1 ¥268 PC 2024.8.19
- 玉皇大帝 《黑神话:悟空》豪华版 x 1 ¥328 PC 2024.8.20
这就是入账,创建新的交易记录,对应的是 C,create,创建、新增。
2.2 查账
一个月过去了,掌柜的赚得金满钵满,账本记得又是密密麻麻,这时候掌柜的就要让主簿校对账本记录,他打开账本一看,便一目了然,这就是查账,就是 R,read,读取、查找。
仔细看,其实账本就是一个 excel 表格:
id | 姓名 | 名称 | 版本 | 数量 | 单价 | 总价 | 创建时间 | 更新时间 |
1 | 吴承恩 | 《黑神话:悟空》 | 标准版 | 1 | 268 | 268 | 2024.8.19 | 2024.8.19 |
2 | 玉皇大帝 | 《黑神话:悟空》 | 豪华版 | 1 | 328 | 328 | 2024.8.20 | 2024.8.20 |
3 | 姬发 | 《黑神话:姜子牙》 | 豪华版 | 2 | 328 | 652 | 2030.8.21 | 2030.8.21 |
2.3 修账
有时候账本记录有误,就要重新记录,或是划掉原来的错误改正,这就是 U,update,更新、编辑、修改。如下方 id 为 2 的记录:
id | 姓名 | 名称 | 版本 | 数量 | 单价 | 总价 | 创建时间 | 更新时间 |
1 | 吴承恩 | 《黑神话:悟空》 | 标准版 | 1 | 268 | 268 | 2024.8.19 | 2024.8.19 |
2 | 玉皇大帝 | 《黑神话:悟空》 | 豪华版 | 2 | 328 | 652 | 2024.8.20 | 2024.8.25 |
3 | 姬发 | 《黑神话:姜子牙》 | 豪华版 | 2 | 328 | 652 | 2030.8.21 | 2030.8.21 |
2.4 删账
偶尔翻到一条记录被划掉,这就是 D,delete,删除。如《黑神话:姜子牙》还没有发布,这条记录应该被删掉:
id | 姓名 | 名称 | 版本 | 数量 | 单价 | 总价 | 创建时间 | 更新时间 |
1 | 吴承恩 | 《黑神话:悟空》 | 标准版 | 1 | 268 | 268 | 2024.8.19 | 2024.8.19 |
2 | 玉皇大帝 | 《黑神话:悟空》 | 豪华版 | 2 | 328 | 652 | 2024.8.20 | 2024.8.21 |
以上,这些记录排布在一起就形成了一张账单,有联系的账单之间将会建立索引,总之,账单聚集在一起就变成了账本,这间堆满账本的屋子就是账房。总结一下,账单相当于数据库中的数据表,账本对应不同环境下的数据库,而账房是不同的数据库系统。
3. 总结
回到当下,在用户打开浏览器页面看到自己的订单记录时,实际上是通过 HTTP 协议发起请求,服务器根据当前路由的匹配规找到对应的控制器,从而执行一个方法,这个方法会对数据库做 CRUD 的某种操作,最后由服务器响应给前端,前端浏览器完成渲染,用户就看到了新的界面。
所以,本质上整个业务流程就是一个账本管理的过程。说起来,现代的账房先生可比古时候轻松很多了。下一节将会进入到实际的代码开发中,看看如何创建一个项目。
- 作者:Eric 见嘉
- 链接:https://tangly1024.com/article/nest-what-is-backend
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。