从零开始搭建一个最简单的NestJS应用
517 字
3 分钟
从零开始搭建一个最简单的NestJS应用
一、首先我们需要安装做需要的依赖
pnpm add @nestjs/common @nestjs/core @nestjs/platform-express reflect-metadata rxjs各个依赖信息
| 包 | 作用 |
|---|---|
@nestjs/core | Nest 核心(IoC容器、模块系统) |
@nestjs/common | Controller / Injectable / 装饰器 |
@nestjs/platform-express | 使用 Express 作为底层 HTTP |
reflect-metadata | TS 装饰器反射(必须) |
rxjs | Nest 内部异步/流支持 |
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" }}运行
pnpm start五、一些装饰器和方法的解释
装饰器:
@Module() 定义一个“模块作用域”
@Controllers() 定义路由前缀
@Get() 定义 GET 请求接口
@Injectable() 标记这个类可以被 IoC 容器管理( 可注入对象注册标记 )
什么是 Ioc(控制反转)
一般创建对象需要自己new
const service = new AppService()Nest写法
constructor(private appService: AppService) {}总的来说就是对象不用自己new了,交给框架统一管理
什么是 DI(依赖注入)
就是把依赖对象自动传进类里面
创建AppService
存入容器
检查发现AppController需要
自动注入
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章 智能推荐
1
vue-office 学习记录
文章示例 使用vue-offce导入pdf文件在线查看
2
五月二十六日
文章示例 朋友的作业
3
UE5 逆向笔记
文章示例 2026-03-11
4
实验4
文章示例 2026-01-28
5
文件测试
文章示例 项目部署 测试markdown渲染。
随机文章 随机推荐