nest从入门到入门-1.安装介绍

551 阅读3分钟

大家好我是练习时长。。。。搞错了。。。 大家好,么系渣渣辉 贪玩蓝月这系你没有玩过的全新版本,开局一把刀装备全靠爆一刀 999 系兄弟就来砍我

记录下自己学习 nest 的过程和一些问题...不知道能写多少

nestjs 的介绍可以去看官网或者中文网

这里复制粘贴一波

  • 用于构建高效且可伸缩的服务端应用程序的渐进式 Node.js 框架。

  • 完美支持 Typescript

  • 面向 AOP 编程

  • 支持 Typeorm

  • 高并发,异步非阻塞 IO

  • Node.js 版的 spring

  • 构建微服务应用

对了他默认是使用express作为底层服务

安装并创建一个项目

在默认已经安装 nodejs 的情况下执行

npm i -g @nestjs/cli

会在全局安装一个 cli 工具,更多 cli 指令操作慢慢呈现,然后使用 cli 创建一个项目

nest new project-name

使用编辑器打开创建好的项目,可以看到初始化的项目目录结构是这样的

目录结构
目录结构

此时 src 目录下是这样的,稍微做下介绍我也是瞎比比的,大概就那么个意思 😯

src
├── app.controller.ts 默认的路由控制器
├── app.service.ts 默认的服务提供者...
├── app.module.ts 应用程序的根模块
└── main.ts 应用程序入口文件

直接npm run start:dev运行然后打开http://localhost:3000看一下,会打印国际通用的Hello word!

这里逐个介绍下 src 下的这几个文件

main | 主入口

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

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

  • @nestjs/core可以从名字看出这是 nest 提供的一个核心包
  • NestFactory是 nest 提供的一个用于创建 nest 实例的核心类,并暴露了一些静态方法用于创建应用实例
  • AppModule是导入的主模块,接下来在后边说下它

控制器

控制器负责处理传入的 请求 和向客户端返回 响应 。控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。通常,每个控制器有多个路由,不同的路由可以执行不同的操作。app.contoller.ts就是一个控制器

说白了就是处理 url 对应的 Api 的。。。

import { Controller, Get } from "@nestjs/common";
import { AppService } from "./app.service";

@Controller("")
export class AppController {
    constructor(
        private readonly appService: AppService
    ) { }

    @Get("")
    index() {
        return this.appService.getHello()
    }
}

  • Controller是 nest 提供的一个将类与路由元数据关联的装饰器
  • Get 也是一个装饰器,用来将方法与特定的请求方式绑定关联处理

提供者

ProvidersNest 的一个基本概念。许多基本的 Nest 类可能被视为 provider例如

  • service
  • repository
  • factory
  • helper 等等

app.service.ts就是一个提供者(一个基本的 nest 类)

import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello World!';
  }
}

  • Injectable是 nest 提供的一个将普通类转化(不好解释好像...)为一个 nest 提供者的装饰器

模块

nest中使用模块组织代码,所有的控制器与提供者都需要在模块中注册

app.module.ts

import { Module } from '@nestjs/common';
import { AppService } from './app.service';
import { AppController } from './app.controller'

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

  • Module 也是一个nest提供的装饰器,装饰一个类为nest模块
  • imports 导入其他模块 与 exports对应,例如es6中的importexport
  • exports 导出模块的部分提供者或者控制器,提供给imports的模块可使用
  • controllers 模块注册的控制器类
  • provideos 模块注册的提供者类

...这就完了?

这里只是大概的安装并初始化一个项目,介绍下目录结构和一些代码...啥的之类的。第一次写,不好表达...这究竟是人性的扭曲,还是道德的沦丧,....尽情期待下一篇烂文章!!!

即将来袭!!!!!!!!!

复杂得很
复杂得很