点击上方 前端Q,关注公众号
回复加群,加入前端Q技术交流群
简介
Nest 是一个用于构建高效,可扩展的
Node.js
服务器端应用程序的框架。在底层,Nest 使用强大的 HTTP Server 框架,如 Express(默认)和 Fastify。Nest 在这些框架之上提供了一定程度的抽象,同时也将其 API 直接暴露给开发人员。这样可以轻松使用每个平台的无数第三方模块。
支持 TypeScript
(也支持纯 js 编写代码),默认支持最新的 ES6 等语法和特性(用 babel 做代码转换)。node 版本要求 >= 10.13.0, v13 版本除外
。
要了解 Nest ,建议先了解一下装饰器,因为 Nest 里面的方法很多都是以装饰器的方式提供的,下面我简单介绍一下。已经了解的朋友可以跳过~
装饰器
装饰器(Decorator)
是一种与类(class)
相关的语法,用来注释或修改类和类方法。它是一种函数,写成@ + 函数名
的形式。它可以放在类和类方法的定义前面。
@testable
class MyTestableClass {
// ...
}
function testable(target) {
target.isTestable = true;
}
MyTestableClass.isTestable // true
基本上,装饰器的行为就是下面这样。
@decorator
class A {}
// 等同于
class A {}
A = decorator(A) || A;
也就是说,装饰器是一个对类进行处理的函数。装饰器函数的第一个参数,就是所要装饰的目标类。
注意点
装饰器对类的行为的改变,是代码编译时发生的,而不是在运行时。这意味着,装饰器能在编译阶段运行代码。也就是说,装饰器本质就是编译时执行的函数。
装饰器只能用于类和类的方法,不能用于函数,因为存在函数提升。如果一定要装饰函数,可以采用高阶函数的形式直接执行。
Nest 基本介绍
安装使用这里就不说了,可以到官网按照其引导来进行:https://docs.nestjs.com/first-steps。
生成的核心文件结构为:
src
|-app.controller.spec.ts
|-app.controller.ts
|-app.module.ts
|-app.service.ts
|-main.ts
其代表的含义分别为:
文件 | 含义 |
---|---|
app.controller.spec.ts | 控制器的单元测试 |
app.controller.ts | 控制器逻辑文件,通常含多个路由 |
app.module.ts | 应用程序的根模块 |
app.service.ts | 服务文件 |
main.ts | 应用程序的入口文件,它是基于NestFactory 创建的一个Nest应用程序实例 |
Controller
什么是 Controller
?语义化翻译就是 控制器
,它负责处理传入的请求并将响应结果返回给客户端。
在 Nest
中,控制器和路由机制是结合在一起的,控制器的目的是接收应用程序的特定请求。其路由
机制控制哪个控制器接收哪些请求。通常,每个控制器都有多个路由,不同的路由可以执行不同的操作。
我们通过装饰器 @Controller()
来将一个类定义为控制器,如: