NestJS

NestJS

Node.js 服务端框架,用 TypeScript 提供开箱即用的应用架构

核心功能

Nest 在 Express 或 Fastify 之上提供一层架构抽象,用模块、控制器、提供者和依赖注入解决 Node 服务端长期缺少统一架构的问题。适合需要长期维护、多人协作的企业级后端项目。

功能亮点

CLI 生成规范目录

nest new 生成 app.module、app.controller、app.service 等核心文件,约定每个模块独立目录

底层平台可换

默认跑在 Express 上,需要更高吞吐时换成 Fastify 适配器,应用代码基本不动

同时暴露底层 API

在抽象之上仍然可以直接访问 Express/Fastify 原生接口,第三方中间件照样能用

开发期自动重编译

npm run start:dev 监听文件变化,自动重新编译并重启服务

SWC 构建提速

给 start 脚本加 -b swc 换用 SWC 构建器,官方称构建速度可快约 20 倍

适用场景

• 需要长期维护的企业级后端服务,用模块与依赖注入约束代码结构
• 多人协作的 Node 项目,靠统一目录约定和 CLI 生成器降低风格分歧
• 已有 Express 中间件积累、但想要更清晰分层的服务重构

安装配置

bash
前置条件:Node.js 版本 >= 20。

用 Nest CLI 创建项目(官方推荐,首次使用建议走这条路):
npm i -g @nestjs/cli
nest new project-name

需要更严格的 TypeScript 配置时加 --strict:
nest new project-name --strict

或者克隆官方 TypeScript starter:
git clone https://github.com/nestjs/typescript-starter.git project
cd project
npm install
npm run start

从零搭建时至少需要这些依赖:@nestjs/core、@nestjs/common、rxjs、reflect-metadata。

使用方法

typescript
入口文件 src/main.ts:
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(process.env.PORT ?? 3000);
}
bootstrap();

启动应用:
npm run start

开发模式(监听文件变化并自动重启):
npm run start:dev

用 SWC 构建器提速:
npm run start -- -b swc

代码检查与格式化:
npm run lint
npm run format

启动后访问 http://localhost:3000/ 可看到 Hello World! 。

关键指标

尚未核验对标产品,此处只列本工具自身指标,不做对比结论。

指标NestJS
价格免费
开源
上手难度进阶

相关工具

同类工具

优点

  • 提供现成的应用架构,模块化与依赖注入让服务易测试、松耦合,不用团队自己定一套分层
  • platform-express 与 platform-fastify 两套适配器可切换,同时仍能直接调用底层框架的原生 API
  • CLI 生成的项目已预装 eslint 与 prettier 并配好脚本,CI 和 Git 钩子里可直接调用
  • 对 TypeScript 支持完整,控制器、服务、模块都有明确的类型契约

缺点

  • 模块、控制器、提供者、装饰器、依赖注入等概念较多,比直接写 Express 路由的前期学习成本高
  • 要求 Node.js >= 20;若想用纯 JavaScript 编写,还需要引入 Babel 编译器
  • 默认构建速度一般,官方专门推荐换用 SWC 构建器来加快编译