❝大家好我是练习时长。。。。搞错了。。。 大家好,么系渣渣辉 贪玩蓝月这系你没有玩过的全新版本,开局一把刀装备全靠爆一刀 999 系兄弟就来砍我
❞
记录下自己学习 nest 的过程和一些问题...不知道能写多少
这里复制粘贴一波
用于构建高效且可伸缩的服务端应用程序的渐进式 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 也是一个装饰器,用来将方法与特定的请求方式绑定关联处理
提供者
Providers 是 Nest 的一个基本概念。许多基本的 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中的import 与 export
- exports 导出模块的部分提供者或者控制器,提供给imports的模块可使用
- controllers 模块注册的控制器类
- provideos 模块注册的提供者类
...这就完了?
这里只是大概的安装并初始化一个项目,介绍下目录结构和一些代码...啥的之类的。第一次写,不好表达...这究竟是人性的扭曲,还是道德的沦丧,....尽情期待下一篇烂文章!!!
即将来袭!!!!!!!!!