核心功能
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 构建器来加快编译