NestJS 生产项目 Tips(1):从 Demo 到生产

进入 2023 年,进入一个新的公司开始一个新的项目。我负责整体后端系统的开发,我之前的 Rust 技术栈在后端领域面临着陡峭的学习曲线和异常的难招人的问题,所以选择了 Go 作为主要开发语言,Go 的简洁和性能是比较吸引我的点。

在使用 Go + Gin + GORM 开发了用户系统和第一个大的功能模块后,让我意识到在繁重的业务开发中选择 Go 并不是一个好的实践。我们的用户系统加第一个功能模块就大概有 10w 行 Go 代码,Go 的轻量级和简洁的语法特性在繁重的业务特性中越来越不堪胜任。这促使我需要根据团队和开发特性制定一个业务和基础模块解耦的架构,需要能更快速的完成业务需求。

在有限的开发资源的情况下,前后端使用同一个技术栈能显著的降低沟通和开发成本。在经过分析和对比后决定使用 NestJS 开发业务需求,Go 开发基础模块和性能敏感部分。这样前端也可以进入后端领域,共同开发。

在 Node.js 后端领域有很多不错的实践,比如 Express、Fastify、Koa 等众多框架和 Prisma、TypeORM 等。

这里需要讨论下 Demo 和实际生产项目的区别,Demo 的实现为了想法的验证,简洁迅速为先。实际生产则是需要强约束和团队合作。在 Node.js 世界,NestJS 几乎是唯一可选择的一个。

在选型初期,我尝试用 Koa 作为基础、routing-controllers 处理路由、class-validator 处理输入验证、TypeORM 处理 ORM 部分。各个组件结合完成后试用也不错,但是这让我意识到最后只不过是再造了一个 NestJS。

NestJS 生产项目 Tips(1):从 Demo 到生产

在实际开发过程中,会遇到非常多文档模糊不清和没有提及的地方。文档的作用是阐述整体的项目结构和流程,并不会有太多生产需要的内容。在 Demo 级别项目中这不是问题,只要能解决一个问题就好。实际生产会碰到的众多问题,要不需要付费咨询,要不沉淀在各大公司内部 Wiki。公开渠道只有翻 GitHub 慢慢找了。

分享一些实际生产级别项目的小 Tips,共同学习。这是第一篇算总结吧,后续一个 Tips 一篇。希望能帮到自己帮到他人。这些 Tips 大概率是每个生产项目都会遇到,不局限于什么框架。目前在用 NestJS,那就用 NestJS 分享一下。

(2)
ChaoChao
上一篇 08/06/2023
下一篇 08/09/2023

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注