NestJS入门(1)——TODO项目创建及概念初步了解

通过实现一个TODO需求来了解NestJS,需要实现的功能包括:

  1. 用户注册、登录
  2. 备忘录创建、修改、查询、删除

创建项目

❗注意:Node版本需≥20

全局安装 Nest CLI 脚手架,并初始化项目,项目名称为 DoraemonNotebook (哆啦A梦记事本)

bash 复制代码
$ npm i -g @nestjs/cli 
$ nest new DoraemonNotebook

了解项目结构及基础概念

创建完成后项目的目录结构如图:

其中核心文件为 src 目录下的几个文件:

文件 说明
app.controller.spec.ts 控制器的单元测试
app.controller.ts 一个具有单个路由的基本控制器
app.module.ts 应用程序的根模块
app.service.ts 一个具有单个方法的基本服务
main.ts 应用程序的入口文件,它使用核心函数 NestFactory 来创建 Nest 应用程序实例

根据这几个核心文件及数据流向我们来了解一下NestJS中的几个核心概念,在入口文件中我们首先会接触到根模块 AppModule 。

模块

Nest项目中至少需要一个根模块,即目前的 app.module.ts 文件,它是 Nest 构建应用程序的起点。我们在组织程序功能架构时推荐使用模块作为组织组件的方式,将一组密切相关的功能作为一个模块,方便管理。

在模块中我们可以看到引入了 AppController 和 AppService,接下来我们先了解控制器(AppController)的概念。

控制器

控制器类似于前端的路由,它告诉程序请求将用哪个控制器处理,一个控制器可以具有多个路由,每个路由执行不同的操作。 具体的操作实现也就是业务逻辑我们一般放在提供者(AppService)中实现。

提供者

提供者(Provider)负责封装特定功能(如业务逻辑、数据访问、工具函数等),并可通过依赖注入(@Injectable())的方式在控制器或其他服务中使用。

默认情况下提供者是单例模式,全局共享实例状态,也可以通过声明作用域将生命周期改为请求作用域(@Injectable({scope: Scope.REQUEST}))、临时作用域(@Injectable({scope: Scope.TRANSIENT}))。

其他

本章只是简单了解NestJS的目录及架构,其实还有很多概念没介绍到,比如装饰器、依赖注入、中间件、异常过滤器、拦截器等,后续的文章中我们将通过在完成实际TODO需求中一一使用并详细讲解。

项目启动

项目开发过程中我们可以通过以下命令启动程序:

bash 复制代码
$ npm run start:dev

此命令将监视您的文件,自动重新编译并重新加载服务器。通过浏览器访问 http://localhost:3000,我们可以看到返回的 Hello World! 消息。

相关推荐
Moshow郑锴10 小时前
Ansible 批量部署 Node.js 服务:ZIP 直解与共享目录分发两种方案对比
node.js·ansible
少年的范儿16 小时前
Windows 安装 Node.js 教程:nvm 版本管理 + pnpm 安装配置
windows·npm·node.js
peach17 小时前
同样是装依赖,为什么 npm 长成 node_modules,Maven 长成 .m2
npm·node.js·maven
FungLeo20 小时前
成为全栈·Go 后端篇·重写之前先锁基线:契约、Node 版本与行为清单
golang·node.js·go·openapi·契约测试·成为全栈
FungLeo2 天前
成为全栈·Go 后端篇·契约一致性与差分测试:两套实现如何互相校验
golang·node.js·go·合约测试·差分测试·成为全栈·api兼容
月夏2 天前
前端第一次接自己的后端:mock 切真接口踩了 2 个坑,组件只改了一行 import
前端·后端·node.js
SEO_juper2 天前
Node.js 页面主题聚焦度检测:title 和正文各说各的,AI 也读不懂
开发语言·人工智能·node.js·seo·外贸独立站
SEO_juper2 天前
Node.js 重定向链检测工具:301 跳了几跳、有没有成环,一次看清
xml·开发语言·python·node.js·json·bash
king13598745503 天前
AI Agent 端云协同选型:Node.js 任务成本算例与权限检查清单(2027—2028 展望)
人工智能·ai·node.js·ai agent
居里先生7523 天前
PDF 批注到底存在文件的哪里?从 /Annots 讲到导出验证
node.js