第一步:基于node创建一个Nest.js项目

第二步:创建写接口的模块,建立moogodb数据库连接,写添加与查询接口

1.介绍Nest.js

  • Nest 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架。它使用渐进式 JavaScript,内置并完全支持 TypeScript(但仍然允许开发人员使用纯 JavaScript 编写代码)并结合了 OOP(面向对象编程),FP(函数式编程)和 FRP(函数式响应编程)的元素。

  • 在底层,Nest使用强大的 HTTP Server 框架,如 Express(默认)和 Fastify。Nest 在这些框架之上提供了一定程度的抽象,同时也将其 API 直接暴露给开发人员。这样可以轻松使用每个平台的无数第三方模块。

  • Nset.js文档地址

  • 我自己尝试写过一个完整的项目,虽然只有权限控制跟删查改写,但基本功能还是有的,使用的是moogodb,同时有跟我写的Nest项目配套的前端项目可以更直观的去体验功能与调试。

  • Nest项目地址

2.安装Nest CLI

 npm i -g @nestjs/cli // 全局安装脚手架
 nest new project-name // 创建一个基础的Nest.js项目
 npm run start:dev // Nest.js 启动命令
  • 将会创建 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 应用实例。

3.创建子模块

  • 一般app开头的模块期望是去用作管理所有子模块

  • 此时需要创建一个模块与控制器:
    模块可以理解成一个集中控制的区域。
    控制器负责处理传入的请求和向客户端返回响应。

3.1创建模块与控制器
// 创建模块
nest g module 模块名称
// 创建控制器
nest g controller 控制器名称
  • **当然有更简洁的命令,在终端输入nest -h

    **
  • 然后就可以看到有很多命令跟简化版,此时就可以试试简化版
// 创建模块 cat 自己定义的名字
nest g mo cat
// 创建控制器 cat 自己定义的名字
nest g co cat
  • 此时就可以在主模块app.module.ts里看到子模块控制器CatController自动被挂载到了主模块上,是不是感觉很像Vue的App入口文件,此时主模块的代码是这样的:
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { CatController } from './cat/cat.controller';
import { CatModule } from './cat/cat.module';

@Module({
  imports: [CatModule],
  controllers: [AppController, CatController],
  providers: [AppService],
})
export class AppModule {}

4.体验Nest.js的接口调用

4.1调用接口(依赖注入方式)
  • 可以在app.controller.ts文件里明确的看到有一个写好的接口,左边为接口定义,右边为响应的数据,采用的依赖注入的方式写入的,此时看main.ts文件可以看到端口跑在3000上,此时用postman调用下试试,接口响应了定义的返回值
4.2调用接口(不用依赖注入)
  • 可能刚开始还不太了解依赖注入或者觉得这样写太麻烦,那就给改造下
  • 更过测试,接口返回值还是没变化,证明改造没问题

5.Nest.js具体描述

  • Nest 旨在成为一个与平台无关的框架。 由于平台无关性,我们以创建可重用的逻辑组件,开发人员可以跨越多种不同类型的应用程序来使用这些组件。 从技术上讲,创建了适配器以后,Nest 可以与任何 node.js 的 HTTP 框架一起工作。如果你有express基础,那么Nest.js完全兼容
  • Nest.js主要使用装饰器,如果你用了解SpringBoot会发现这种写法更偏向于Java
  • Nest.js会暴露很多固定的API,很多时候并不需要关心具体逻辑,就能快速上手,只需调用固定的API就可以实现想要的功能
  • Nest.js的各种连接主要是使用的依赖注入,是这样描述的:
    依赖注入(Providers) 是 Nest 的一个基本概念。许多基本的 Nest 类可能被视为 provider - service, repository, factory, helper 等等。 他们都可以通过 constructor 注入依赖关系。 这意味着对象可以彼此创建各种关系,并且“连接”对象实例的功能在很大程度上可以委托给 Nest运行时系统。 Provider 只是一个用 @Injectable() 装饰器注释的类。

你可能感兴趣的:(第一步:基于node创建一个Nest.js项目)