NestJs学习(1)启动

nestjs是一个基于Nodejs的平台框架,支持开箱即用Express/Fastify框架。有express基础的可以很快上手,没有基础的学习成本也很低。并且在框架结构上类似与SpringBoot框架,对于java后端开发人员可以快速上手,并且使用了TypeScript语言之后可以很好的进行类型检测。

文章内容来源链接:
NestJs中文文档
NestJs官方文档

先前条件: Node.js(版本 >= 16)
安装:https://docs.nestjs.cn/10/firststeps?id=%e5%85%88%e5%86%b3%e6%9d%a1%e4%bb%b6

项目创建

使用Nest CLI创建新项目:

 npm i -g @nestjs/cli #安装脚手架
 nest new project-name #创建项目 project-name为你的项目名称。

将会创建 project-name 目录, 安装 node_modules 和一些其他样板文件,并将创建一个 src 目录,目录中包含几个核心文件。

src
 ├── app.controller.spec.ts
 ├── app.controller.ts
 ├── app.module.ts
 ├── app.service.ts
 └── main.ts

以下是这些核心文件的简要概述:

  • app.controller.ts 带有单个路由的基本控制器示例。
  • app.controller.spec.ts 对于基本控制器的单元测试样例 app.module.ts 应用程序的根模块。
  • app.service.ts 带有单个方法的基本服务
  • main.ts 应用程序入口文件。它使用 NestFactory 用来创建 Nest应用实例。

main.ts 包含一个异步函数,它负责引导我们的应用程序:


//main.js
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  //如果是第一次写建议使用NestFactory.create(AppModule, { abortOnError: false }))  ①,项目代码报错时,会抛出异常,而不是直接结束程序。 
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

要创建一个 Nest 应用实例,我们使用了 NestFactory 核心类。NestFactory 暴露了一些静态方法用于创建应用实例。 create() 方法返回一个实现 INestApplication 接口的对象。该对象提供了一组可用的方法,我们会在后面的章节中对这些方法进行详细描述。 在上面的 main.ts 示例中,我们只是启动 HTTP 服务,让应用程序等待 HTTP 请求。

① 默认情况下,如果在创建应用程序时发生了任何错误,你的应用程序会退出并返回错误代码 1。如果你想让它抛出错误,请禁用 abortOnError 选项(例如,NestFactory.create(AppModule, { abortOnError: false }))。

平台

Nest 旨在成为一个与平台无关的框架。 由于平台无关性,我们以创建可重用的逻辑组件,开发人员可以跨越多种不同类型的应用程序来使用这些组件。 从技术上讲,创建了适配器以后,Nest 可以与任何 node.js 的 HTTP 框架一起工作。有两个支持开箱即用的 HTTP 平台:express 和 fastify。您可以选择最适合您需求的产品。

platform-express Express 是一个众所周知的 node.js 简约 Web 框架。 这是一个经过实战考验,适用于生产的库,拥有大量社区资源。 默认情况下使用 @nestjs/platform-express 包。 许多用户都可以使用 Express ,并且无需采取任何操作即可启用它。
platform-fastify Fastify 是一个高性能,低开销的框架,专注于提供最高的效率和速度。 在这里阅读如何使用它。

无论使用哪种平台,它都会暴露自己的 API。 它们分别是 NestExpressApplication 和 NestFastifyApplication。

将类型传递给 NestFactory.create() 函数时,如下例所示,app 对象将具有专用于该特定平台的函数。 但是,请注意,除非您确实要访问底层平台 API,否则无需指定类型。

const app = await NestFactory.create<NestExpressApplication>(AppModule);

NestJS对于express路由模式的适配性更强大些,如果你子域路由的需求,建议使用express的模式,由于 Fastify 缺乏对嵌套路由器的支持,因此当使用子域路由时,应该改用(默认) Express 适配器(Express adapter)。其他待完善。

运行程序

在当前项目文件下,使用命令行执行以下命令进行启动应用程序。

npm run start

为了加快开发过程(构建速度快x20倍),您可以使用 SWC builder 请将 -b swc 标志传递给 start 脚本, 比如这样 npm run start – -b swc.

此命令启动 HTTP 服务监听定义在 src/main.ts 文件中定义的端口号。在应用程序运行后, 打开浏览器并访问 http://localhost:3000/。 你应该看到 Hello world! 信息。

要监听文件中的更改,您可以运行以下命令来启动应用程序:

npm run start:dev

此命令将监听您的文件,自动重新编译并重新加载服务器。

检查工具和格式化工具

CLI 提供一个可靠的大规模开发工作流框架。因此生成的 Nest 项目默认集成了代码检查工具和格式化工具(分别是 eslint 和 prettier)。

为了确保最大的稳定性和可扩展性,我们使用了 eslint 和 prettier 的基础工具包。这种预设从设计上允许与官方(指Eslint,Prettier)的扩展进行整洁的IDE集成。

对于不需要IDE的无头环境(如持续集成、Git钩子等),Nest项目自带了开箱即用的 npm 脚本。

# Lint and autofix with eslint
npm run lint

# Format with prettier
npm run format
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值