基本概念
1、关于nestjs
即将要学习,很多概念还不清楚具体什么意思。目前知道是基于typescript构建的框架,采用模块化,类似像springboot. 搜索到的相关说明写到下面,等学完后再回头对这些特性进行解释。
NestJS 的核心特性包括:
1. 模块化:通过 NestJS 的模块系统,开发者可以更好地组织代码并实现组件重用,同时支持懒加载以提高性能。
2. 依赖注入:内置强大的依赖注入容器,允许在应用的不同部分之间轻松地管理和服务之间的依赖关系。
3. 控制器与路由:提供了装饰器来定义路由和处理HTTP请求,类似于Express或Angular中的路由机制。
4. 中间件:支持使用自定义中间件来拦截和处理请求,提供了一种灵活的方式来执行通用操作,如身份验证、日志记录等。
5. 管道(Pipes):用于处理进入和离开控制器方法的输入和输出数据,比如参数校验、格式转换等。
6. 服务:将业务逻辑封装在服务中,便于复用和测试,并可通过依赖注入的方式在控制器和其他服务中消费。
7. 守护进程(Microservices support):NestJS 提供对微服务架构的支持,能够创建和管理分布式服务。
8. 命令行工具(CLI):Nest CLI 提供了一个便捷的命令行界面,用于快速初始化项目、生成文件结构、运行开发服务器及构建生产环境版本。
9. 测试支持:内建集成测试功能,方便进行单元测试和端到端测试。
2、环境安装
1. 确保你已经安装了Node.js和npm(Node包管理器): 确保你的系统中已经安装了最新版本的Node.js。可以通过访问Node.js官网下载并安装。
2. 全局安装NestJS CLI工具: 打开终端(在Windows上是命令提示符或PowerShell,在macOS和Linux上是终端),然后运行以下命令来全局安装NestJS的命令行界面(CLI)工具:
npm install -g @nestjs/cli
3. 创建新项目: 要创建一个名为my-nest-project的新NestJS项目,请在终端中导航到你想存放项目的目录,然后执行:
nest new my-nest-project
这将自动创建一个基础项目结构,并安装所有必需的依赖项。
4. 进入项目并启动开发服务器: 安装完成后,导航到新创建的项目文件夹:
cd my-nest-project
启动开发服务器:
npm run start:dev
以上命令会编译并启动应用程序,通常监听在http://localhost:3000端口。
奇怪没有看到运行成功的提示,不过已经运行成功了,浏览器打开显示hello word
核心文件了解
创建项目核心文件
| app.controller.ts | 带有单个路由的基本控制器示例。 |
|---|---|
| app.controller.spec.ts | 对于基本控制器的单元测试样例 |
| app.module.ts | 应用程序的根模块。 |
| app.service.ts | 带有单个方法的基本服务 |
| main.ts | 应用程序入口文件。它使用 NestFactory 用来创建 Nest 应用实例。 |
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
await app.listen(3001);
}
bootstrap();
import { NestFactory } from '@nestjs/core';
// 导入NestFactory类,用于创建Nest应用
import { AppModule } from './app.module';
// 导入AppModule类,定义了应用程序的模块
// 导入NestExpressApplication类,用于创建基于Express的Nest应用
import { NestExpressApplication } from '@nestjs/platform-express';
async function bootstrap() {
// 创建一个基于Express的Nest应用
const app = await NestFactory.create<NestExpressApplication>(AppModule);
// 监听3000端口
await app.listen(3000);
}
bootstrap(); // 启动应用程序
const app = await NestFactory.create(AppModule);
默认使用的是NestExpressApplication
有两种开箱即用的 HTTP 平台支持:express和fastify。您可以选择最适合您需求的一种
platform-expressExpress是一个著名的 Node.js 极简 Web 框架。这是一个经过实战考验、可用于生产的库,其中包含由社区实施的大量资源。@nestjs/platform-express默认使用该包