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)
    }
}
相关文章
|
7月前
|
API
Vue3进阶5个小知识点 附带源码
Vue3进阶5个小知识点 附带源码
64 0
|
7月前
|
JavaScript 前端开发 API
vue3的知识点,要点,注意事项
vue3的知识点,要点,注意事项
55 1
|
7月前
|
JavaScript 前端开发 中间件
Redux学习笔记---简单使用以及源码阅读
Redux学习笔记---简单使用以及源码阅读
|
SQL XML 前端开发
Spring Boot + vue-element 开发个人博客项目实战教程(十八、操作日志功能实现)2
Spring Boot + vue-element 开发个人博客项目实战教程(十八、操作日志功能实现)2
138 0
Spring Boot + vue-element 开发个人博客项目实战教程(十八、操作日志功能实现)2
|
JavaScript 前端开发 API
Vue.js入门指南:从基础到进阶,掌握现代JavaScript框架的核心概念与高级特性(2W字小白教程)
Vue.js入门指南:从基础到进阶,掌握现代JavaScript框架的核心概念与高级特性(2W字小白教程)
188 0
|
XML 存储 SQL
Spring Boot + vue-element 开发个人博客项目实战教程(十八、操作日志功能实现)1
Spring Boot + vue-element 开发个人博客项目实战教程(十八、操作日志功能实现)1
168 0
小满nestjs(第三章 前置知识装饰器)
属性描述符 可写对应writable,可枚举对应enumerable,可配置对应configurable
109 0
小满nestjs(第三章 前置知识装饰器)
|
存储 消息中间件 JSON
JS_基础知识点精讲
JS 组成 基本数据类型 类型转换(装箱/拆箱) 作用域 & 执行上下文 调用栈 闭包 Environments: JS变量查找的底层实现 JS 深浅复制 Event Loop ES6遍历对象的属性 (5种) 垃圾回收机制 内存问题
141 0
|
缓存 Java Android开发
EventBus原理解析笔记以及案例实战(结合demo)
EventBus原理解析笔记以及案例实战(结合demo)
|
机器人 测试技术 Android开发
【第二篇】XiaoZaiMultiAutoAiDevices之基本使用
从一个框架,延伸各项知识点,补补基础,挺好~
143 0

热门文章

最新文章