news 2026/6/8 22:43:59

Nest.js 基础-8-Hello,NestJS

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Nest.js 基础-8-Hello,NestJS

这一篇使用 NestJS CLI 初始化项目,详解项目目录结构、核心配置、运行脚本,跑通第一个经典的 Hello World建立对 NestJS 项目的整体认知。

一、项目初始化与整体目录概述

通过NestJS CLI快速初始化空白项目,初始化完成后使用 VS Code 打开工程目录即可开始开发。NestJS 官方预设了标准化的项目目录结构,同时内置了代码规范、格式化、测试等工具,开箱即用。

项目核心目录及工具整体分工清晰,核心结构如下:

  • src 目录:项目核心源代码存放目录,所有业务代码均在此编写

  • node_modules 目录:存放项目所有第三方依赖包,自动安装生成

  • test 目录:项目测试文件目录,用于编写单元测试、端到端(E2E)测试

同时,NestJS 初始化项目默认集成两套开发必备工具:

  • Jest 测试框架:无需额外配置,支持自动化测试,满足后端项目测试规范要求

  • ESLint + Prettier:代码规范检查与代码格式化工具,配合 VS Code 对应插件,可实现代码自动校验、统一代码风格,规避不规范代码

二、核心文件与配置详解

NestJS 项目的配置文件各司其职,理解核心文件的作用,是掌握 NestJS 开发的基础。

1. 项目运行核心

  • nest-cli.json:NestJS 脚手架核心配置文件,用于配置项目编译、构建、CLI 命令相关规则,是项目的核心框架配置

  • package.json:Node.js 项目标配配置文件,记录项目名称、版本、所有依赖包、自定义运行脚本命令,是项目依赖管理和脚本执行的核心

2. TypeScript 配置文件

  • tsconfig.json:全局 TypeScript 基础配置,定义项目 TS 编译规则、语法兼容、路径别名等基础配置

  • tsconfig.build.json:专属构建配置文件,仅在项目打包、编译上线时生效,区别于开发环境的 TS 配置,优化生产构建效率

3. 开源许可证配置

正规开源/商用项目都需要配置开源许可证,NestJS 项目默认可自定义证书协议,主流两种协议区别如下:

  • MIT 协议:最灵活、使用最广泛的协议,允许项目商业化使用,无强制开源约束,适合绝大多数企业级项目

  • GPL 协议:具备“传染性”,使用该协议的项目,衍生项目必须强制开源,Linux 系统即采用此协议,商用项目慎用

VS Code 可通过插件快速配置证书:

  1. Choose a License:快速生成项目根目录 LICENSE 文件,一键选择 MIT、GPL 等主流协议

  2. Licenser:支持单个/批量文件头部插入许可证信息,通过命令面板执行Insert License Header命令即可添加;可在 VS Code 用户配置中预设作者、许可证信息,实现工作区所有文件批量添加证书头部

三、项目运行脚本与启动方式

NestJS 在package.json中预设了三套核心运行脚本,适配开发、调试、生产三种场景,日常开发高频使用。

运行脚本

运行场景

核心特性

pnpm start:dev

开发环境

支持文件热更新,修改代码无需重启项目,开发效率最高

pnpm start

生产环境

打包编译后启动,性能优化,用于项目上线部署

pnpm start:debug

调试环境

开启调试模式,支持断点调试,适配问题排查

启动 Hello World 项目

执行开发环境启动命令:pnpm start:dev,项目默认在3000 端口启动。

端口配置核心入口为项目根文件main.ts,文件中app.listen(3000)方法定义了项目监听端口,可根据需求自定义修改。

项目启动成功后,浏览器访问localhost:3000,即可看到默认响应内容:Hello World,至此第一个 NestJS 应用运行成功!

四、src 核心目录结构深度解析

src 是项目的核心业务目录,默认生成三个核心文件,也是 NestJS 模块化架构的基础组成部分,理解这三个文件的分工,就能掌握 NestJS 最核心的开发思想。

  • app.controller.ts(控制器):负责接收客户端请求、定义路由、返回响应结果,是请求的入口层,所有路由接口都在此定义

  • app.service.ts(服务层):负责编写核心业务逻辑、数据处理、数据库交互,控制器只负责请求转发,不处理业务逻辑,实现路由与业务解耦

  • app.module.ts(根模块):项目根模块,是整个应用的结构组织者,统一管理控制器、服务、依赖注入等资源

五、NestJS 核心设计思想:模块化架构

NestJS 框架规定项目所有功能、所有业务逻辑都必须通过模块进行组织和管理。

这种架构模式解决项目代码混乱、耦合度高、难以维护的问题,让代码结构分层清晰、职责单一,极大提升了项目的可维护性、可扩展性,完美适配中大型后端项目、团队协作开发以及微服务架构。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/8 22:39:20

基于LPC51U68与SCTimer的I2C总线鲁棒性测试与错误注入实战

1. 项目概述 在嵌入式开发中,I2C总线因其简洁的两线制(SCL时钟线和SDA数据线)和灵活的多主从架构,成为了连接传感器、EEPROM、RTC等外设的首选协议。然而,在实际的工业环境或复杂的电磁场景下,I2C总线极易受…

作者头像 李华
网站建设 2026/6/8 22:38:28

车辆信息安全之《诊断》

🔧 车载诊断协议深解:从 OBD 溯源到 UDS 核心机制 📌 前言:两种诊断协议,一个共同目标 如果你拆开一辆现代汽车的诊断接口,插上一台通用扫描仪,你能读到发动机转速、故障码、氧传感器数据——这…

作者头像 李华
网站建设 2026/6/8 22:36:35

Sub2API 从脚本安装迁移到 Docker Compose 部署流程

Sub2API 从脚本安装迁移到 Docker Compose 部署流程 本文档记录一次实际走通的 Sub2API 迁移流程:旧服务器使用官方脚本安装,配置和程序位于 /opt/sub2api;新服务器使用官方 docker-compose.local.yml 部署,并从 PostgreSQL 备份恢…

作者头像 李华
网站建设 2026/6/8 22:32:52

图解人工智能(51)人工智能应用-机器作家

思考一下,人类的语言是受语法约束的,但是单靠语法规则计算机很难写出一篇通顺合理的小说,这是为什么? 语法规则很难穷尽人类的语言现象,很多句子是符合语法的,但却不合常理。 这意味着光有语法规则还不够…

作者头像 李华
网站建设 2026/6/8 22:32:50

3分钟解锁B站缓存视频:m4s-converter终极转换教程

3分钟解锁B站缓存视频:m4s-converter终极转换教程 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾因B站视频突然下架而懊恼&…

作者头像 李华