当前位置: 首页 > news >正文

NestJS 系列教程(一):认识 NestJS 与项目初始化

🚀 NestJS 系列教程(一):认识 NestJS 与项目初始化

✨ 前言

NestJS 是一个用于构建高效、可扩展 Node.js 服务端应用程序的框架。它使用 TypeScript 构建,结合了面向对象编程(OOP)、函数式编程(FP)和函数响应式编程(FRP)等概念,非常适合用于构建微服务、RESTful API 等现代服务端应用。

本系列教程将以 NestJS 官方中文文档 为蓝本,逐章精讲配套代码,带你系统学习这一现代 Node.js 框架。


🧱 第1章:NestJS 简介与项目初始化

Nest 是什么?

Nest 是一个渐进式 Node.js 框架,用于构建高性能的服务端应用。

Nest 基于 TypeScript 构建,并受 Angular 的启发,结构清晰、模块化、可测试性强。它对 Express(默认)或 Fastify 提供封装,保留底层自由度,同时提供更现代的结构化开发体验。


🛠️ 创建第一个 NestJS 项目

我们使用官方提供的 CLI 工具来快速初始化项目。

安装 Nest CLI

npm i -g @nestjs/cli

安装成功后,你可以使用 nest 命令:

nest --version

创建项目

nest new my-nest-project

CLI 会提示你选择包管理器,推荐选择 npmyarn

初始化成功后,项目结构如下:

my-nest-project/
├── src/
│   ├── app.controller.ts        // 控制器
│   ├── app.controller.spec.ts   // 控制器测试文件
│   ├── app.module.ts            // 根模块
│   ├── app.service.ts           // 服务(业务逻辑)
│   └── main.ts                  // 应用入口文件
├── test/                        // 测试目录
├── package.json
└── tsconfig.json                // TypeScript 配置

🚀 运行项目

进入项目目录:

cd my-nest-project
npm run start

默认监听端口为 http://localhost:3000,你将看到:

[Nest] 2025   - Nest application successfully started

访问浏览器输入地址 http://localhost:3000,将看到:

Hello World!

📂 项目结构讲解

main.ts

Nest 应用的入口文件:

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';async function bootstrap() {const app = await NestFactory.create(AppModule);await app.listen(3000);
}
bootstrap();
说明:
  • NestFactory.create(AppModule):创建应用实例;
  • app.listen(3000):监听 3000 端口;
  • AppModule 是我们的根模块。

app.module.ts

模块是 Nest 的核心结构单元:

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() // 监听 GET /getHello(): string {return this.appService.getHello();}
}

app.service.ts

服务中处理具体业务逻辑:

import { Injectable } from '@nestjs/common';@Injectable()
export class AppService {getHello(): string {return 'Hello World!';}
}

✅ 小结

在本篇中,我们完成了:

  • 了解 NestJS 的基本理念;
  • 使用 Nest CLI 快速初始化项目;
  • 运行并分析了基础项目结构;
  • 学习了 main.ts, app.module.ts, app.controller.ts, app.service.ts 的功能。

🔮 下一篇预告

第2篇:理解模块系统 Module 与依赖注入 DI 机制

http://www.dtcms.com/a/264663.html

相关文章:

  • RabbitMQ 高级特性之持久性
  • OpenCV仿射变换详解
  • 【飞算JavaAI】智能开发助手赋能Java领域,飞算JavaAI全方位解析
  • 红海云签约东莞科创金融集团,科创金融行业人力资源数字化
  • 论文阅读笔记——VGGT: Visual Geometry Grounded Transformer
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ButtonRippleEffect(按钮涟漪效果)
  • 基于[coze][dify]搭建一个智能体工作流,使用第三方插件抓取热门视频数据,自动存入在线表格
  • Node.js-http模块
  • mac Maven配置报错The JAVA_HOME environment variable is not defined correctly的解决方法
  • 21、企业行政办公(OA)数字化转型:系统如何重塑企业高效运营新范式
  • Android Native 之 inputflinger进程分析
  • 硬件选型与组网规划S7-300以太网模块适配性与网络架构搭建
  • 学习笔记(27):线性回归基础与实战:从原理到应用的简易入门
  • 利器:NPM和YARN及其他
  • 楚存科技SD NAND贴片式T卡—高性能存储解决方案、赋能AI智能硬件
  • 《Jaccard距离》算法:集合差异性度量的核心工具
  • 第三章 计算机网络体系结构
  • 【前端】基础 - HTML基础标签和样式设置
  • 深入理解装饰器模式:动态扩展对象功能的灵活设计模式
  • 前端Base64格式文件上传详解:原理、实现与最佳实践
  • STM32 使用 TinyUSB
  • 03-Linux内核驱动模块加载
  • visual studio Code运行vue项目
  • 4K超高清无缝切换与画面分割矩阵
  • gin框架 中间件 是在判断路由存在前执行还是存在后执行的研究
  • 【AI智能体】基于Coze 制作高质量PPT实战操作详解
  • 打造Docker Swarm集群服务编排部署指南:从入门到精通
  • 降低网络安全中的人为风险:以人为本的路径
  • mr 任务运行及jar
  • FAISS 简介及其与 GPT 的对接(RAG)