Nestjs(一)入门前置知识点

简介: Nestjs(一)入门前置知识点

一、简介

  • 纯中文文档中英混合文档英文文档
  • Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用的框架。 它使用渐进式 JavaScript,构建并完全支持 TypeScript(但仍然允许开发者使用纯 JavaScript 进行编码)并结合了 OOP(面向对象编程)、FP(函数式编程)和 FRP(函数式反应式编程)的元素。
  • 在幕后,Nest 使用强大的 HTTP 服务器框架,如 Express(默认),也可以选择配置为使用 Fastify
  • Nest 在这些常见的 Node.js 框架(Express/Fastify)之上提供了一个抽象级别,但也直接向开发者公开了它们的 API。 这使开发者可以自由使用可用于底层平台的无数第三方模块。

二、前置知识点案例

  • 修饰器分为 ClassDecoratorPropertyDecoratorMethodDecoratorParameterDecorator,测试装饰器,需要开启一项配置
  • 安装 tsc,可以将 ts 文件按照编译配置编译成目标 js 运行到浏览器,这里只是为了用它生成配置文件。
# npm 安装
$ npm i -g typescript
# yarn 安装
$ yarn global add typescript
# 安装校验
$ tsc -v
  • 安装 ts-node,作用是 nodejs 即可直接运行TS代码,内部将 TS => JS,然后nodejs 再运行 JS 代码。
# npm 安装
$ npm i -g ts-node
# 安装校验
$ ts-node -v
  • 在测试项目根目录中,执行下面命令得到 tsconfig.json 文件,并打开 experimentalDecorators 这行的注释,才算启动了装饰器。
$ tsc --init
  • 测试代码 index.ts,使用了 ClassDecorator
// 装饰器
const decotator: ClassDecorator = (target: any) => {
  // 好处就是不去破坏原有的类接口,从而新增一些属性
  target.prototype.name = 'dzm'
  // 怕属性重名可以添加下划线
  target.prototype.__name = '__dzm'
}
// 装饰器使用 - 方式一: 注意,这种方式必须要在 tsconfig.json 启用装饰器,否则只能使用方式二
@decotator
class Dzm {
  constructor() {
  }
}
// 装饰器使用 - 方式二:
// decotator(Dzm)
// 使用装饰器调整过的 class
const dzm: any = new Dzm()
console.log(dzm.name, dzm.__name) // dzm __dzm
  • 运行 index.ts
$ ts-node index.ts
dzm __dzm
import axios from 'axios'
// 装饰器可以传入自定义参数
const Get = (url: string): MethodDecorator => {
    // 通过装饰器处理
    return (target, key, descriptor: PropertyDescriptor) => {
        // 获取到 getList 函数方法
        const fnc = descriptor.value;
        // 请求
        axios.get(url).then(res => {
            // 返回
            fnc(res, {
                status: 200,
            })
        }).catch(e => {
            // 返回
            fnc(e, {
                status: 500,
            })
        })
    }
}
// 定义控制器
class Controller {
    constructor () {
        // 构造器
    }
    @Get('https://api.apiopen.top/api/getHaoKanVideo?page=0&size=10')
    getList (res: any, status: any) {
      console.log(res.data.result.list, status)
    }
}
相关文章
|
5月前
|
API
Vue3进阶5个小知识点 附带源码
Vue3进阶5个小知识点 附带源码
50 0
|
12月前
|
前端开发 Java 数据库连接
笔记(springboot、里面有部分前端(th语法)
笔记(springboot、里面有部分前端(th语法)
|
3月前
|
Java 关系型数据库 MySQL
基于SpringBoot+Vue交流和分享平台的设计与实现(源码+部署说明+演示视频+源码介绍)(1)
基于SpringBoot+Vue交流和分享平台的设计与实现(源码+部署说明+演示视频+源码介绍)
36 1
|
3月前
|
Java 测试技术 程序员
基于SpringBoot+Vue交流和分享平台的设计与实现(源码+部署说明+演示视频+源码介绍)(2)
基于SpringBoot+Vue交流和分享平台的设计与实现(源码+部署说明+演示视频+源码介绍)
29 1
|
前端开发
前端学习笔记202305学习笔记第二十一天-vue3.0-拦截器实现loding效果
前端学习笔记202305学习笔记第二十一天-vue3.0-拦截器实现loding效果
43 0
|
前端开发 Java API
java springboot 手把手带你敲微信公众号自定义登录实现token拦截【硬货教程】
java springboot 手把手带你敲微信公众号自定义登录实现token拦截【硬货教程】
|
前端开发
前端学习案例4:ES6中的修饰器4
前端学习案例4:ES6中的修饰器4
60 0
前端学习案例4:ES6中的修饰器4
小满nestjs(第三章 前置知识装饰器)
属性描述符 可写对应writable,可枚举对应enumerable,可配置对应configurable
101 0
小满nestjs(第三章 前置知识装饰器)
|
存储 JSON 开发框架
C# RulesEngine 规则引擎:从入门到看懵
说明 安装 怎么使用 多参数 全局参数、本地参数 全局参数 本地参数 定义验证成功、失败行为 计算折扣 使用自定义函数 静态函数 实例函数 自定义执行器
184 0
|
前端开发
前端学习案例2:ES6中的修饰器2
前端学习案例2:ES6中的修饰器2
68 0
前端学习案例2:ES6中的修饰器2