从零开始搭建一个最简单的NestJS应用

517 字
3 分钟
从零开始搭建一个最简单的NestJS应用

一、首先我们需要安装做需要的依赖#

Terminal window
pnpm add @nestjs/common @nestjs/core @nestjs/platform-express reflect-metadata rxjs

各个依赖信息

作用
@nestjs/coreNest 核心(IoC容器、模块系统)
@nestjs/commonController / Injectable / 装饰器
@nestjs/platform-express使用 Express 作为底层 HTTP
reflect-metadataTS 装饰器反射(必须)
rxjsNest 内部异步/流支持
Terminal window
pnpm add -D typescript ts-node @types/node

二、初始化tsconfig.json#

创建tsconfig.json

内容:

{
"compilerOptions": {
"module": "commonjs", //指定默认模块规范
"target": "es2021", //编译成哪个js版本
"experimentalDecorators": true, //开启装饰器否则会报错
"emitDecoratorMetadata": true, //给装饰器“加类型元数据”
"strict": true, //严格模式
"esModuleInterop": true, //兼容 ESModule 和 CommonJS
"outDir": "dist" //编译输出目录dist
}
}

三、确定项目解构#

src/
├── main.ts
├── app.module.ts
├── app.controller.ts
└── app.service.ts

四、每个文件内容:#

main.ts(入口文件)用于启动整个NestJS应用#
import { NestFactory } from '@nestjs/core'
import { AppModule } from './app.module'
import 'reflect-metadata'
async function bootstrap() {
const app = await NestFactory.create(AppModule)
await app.listen(3000)
}
bootstrap()
app.module.ts(根模块) 整个应用的“总配置中心”#
import { Module } from '@nestjs/common'
import { AppController } from './app.controller'
import { AppService } from './app.service'
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
app.controller.ts(控制层)处理请求#
import { Controller, Get } from '@nestjs/common'
import { AppService } from './app.service'
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello() {
return this.appService.getHello()
}
}
app.service.ts(业务层) 写业务逻辑#
import { Injectable } from '@nestjs/common'
@Injectable()
export class AppService {
getHello(): string {
return 'Hello Nest'
}
}
快捷启动,在package.json中添加:#
{
"scripts": {
"start": "ts-node src/main.ts"
}
}
运行#
Terminal window
pnpm start

访问http://localhost:3000

五、一些装饰器和方法的解释#

装饰器:#
@Module() 定义一个“模块作用域”#
@Controllers() 定义路由前缀#
@Get() 定义 GET 请求接口#
@Injectable() 标记这个类可以被 IoC 容器管理( 可注入对象注册标记 )#
什么是 Ioc(控制反转)#

一般创建对象需要自己new

const service = new AppService()

Nest写法

constructor(private appService: AppService) {}

总的来说就是对象不用自己new了,交给框架统一管理

什么是 DI(依赖注入)#

就是把依赖对象自动传进类里面

创建AppService#
存入容器#
检查发现AppController需要#
自动注入#

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

从零开始搭建一个最简单的NestJS应用
https://c7lz11.cn/posts/nestjs/
作者
Changed
发布于
2026-04-12
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Changed
Hello, I'm Changed.
热爱技术,喜欢分享,喜欢音乐。
公告
图床使用的是cloudflare可能加载有些慢,可以使用魔法。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
7
分类
1
标签
12
总字数
4,585
运行时长
0
最后活动
0 天前

文章目录