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)
    }
}
相关文章
|
6月前
|
API
Vue3进阶5个小知识点 附带源码
Vue3进阶5个小知识点 附带源码
56 0
|
前端开发 Java 数据库连接
笔记(springboot、里面有部分前端(th语法)
笔记(springboot、里面有部分前端(th语法)
|
6月前
|
JavaScript 前端开发 中间件
Redux学习笔记---简单使用以及源码阅读
Redux学习笔记---简单使用以及源码阅读
|
6月前
|
前端开发 JavaScript 程序员
Django前置知识--手撕框架(二)
Django前置知识--手撕框架(二)
|
6月前
|
Web App开发 JavaScript 数据格式
Django前置知识--手撕框架(一)
Django前置知识--手撕框架(一)
|
前端开发
前端学习笔记202305学习笔记第二十一天-vue3.0-拦截器实现loding效果
前端学习笔记202305学习笔记第二十一天-vue3.0-拦截器实现loding效果
45 0
|
JavaScript
一遍关于vue基础语法下篇
一遍关于vue基础语法下篇
47 0
小满nestjs(第三章 前置知识装饰器)
属性描述符 可写对应writable,可枚举对应enumerable,可配置对应configurable
107 0
小满nestjs(第三章 前置知识装饰器)
小满nestjs(第四章 前置知识装饰器-实现一个GET请求)
定义 descriptor 的类型 通过 descriptor描述符里面的value 把axios的结果返回给当前使用装饰器的函数
82 0
小满nestjs(第四章 前置知识装饰器-实现一个GET请求)
|
Java Maven Spring
AOP功能代码实例---Spring源码从入门到精通(十七)
AOP功能代码实例---Spring源码从入门到精通(十七)
AOP功能代码实例---Spring源码从入门到精通(十七)