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 构建应用程序的起点。我们在组织程序功能架构时推荐使用模块作为组织组件的方式,将一组密切相关的功能作为一个模块,方便管理。

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

控制器

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

提供者

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

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

其他

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

项目启动

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

bash 复制代码
$ npm run start:dev

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

相关推荐
朝朝暮暮an12 小时前
Day 3|Node.js 异步模型 & Promise / async-await(Part 1)
node.js
梦帮科技18 小时前
Node.js配置生成器CLI工具开发实战
前端·人工智能·windows·前端框架·node.js·json
Misnice20 小时前
Webpack、Vite、Rsbuild区别
前端·webpack·node.js
毕设源码-朱学姐2 天前
【开题答辩全过程】以 基于Node.js的书籍分享平台设计与实现为例,包含答辩的问题和答案
node.js
前端 贾公子2 天前
Node.js 如何处理 ES6 模块
前端·node.js·es6
周杰伦的稻香2 天前
Hexo搭建教程
java·node.js
毕设源码-钟学长2 天前
【开题答辩全过程】以 基于node.js vue的点餐系统的设计与实现为例,包含答辩的问题和答案
前端·vue.js·node.js
weixin_425543733 天前
TRAE CN3.3.25 构建的Electron简易DEMO应用
前端·typescript·electron·vite·nestjs
朝朝暮暮an3 天前
Day 2|Node.js 运行机制、模块系统与异步初探
node.js
aidou13143 天前
Visual Studio Code(VS Code)安装步骤
vscode·npm·node.js·环境变量