前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航

Nestjs学习总结

首页
2022-05-25 20:35:24
Front-End
NodeNest

Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的开发框架。它利用 JavaScript 的渐进增强的能力,使用并完全支持 TypeScript (仍然允许开发者使用纯 JavaScript 进行开发),并结合了 OOP (面向对象编程)、FP (函数式编程)和 FRP (函数响应式编程)。

  • 在底层,Nest 构建在强大的 HTTP 服务器框架上,例如 Express (默认),并且还可以通过配置从而使用 Fastify !
  • Nest 在这些常见的 Node.js 框架 (Express/Fastify) 之上提高了一个抽象级别,但仍然向开发者直接暴露了底层框架的 API。这使得开发者可以自由地使用适用于底层平台的无数的第三方模块。

本文基于nest8演示

# 基础

# 创建项目

$ npm i -g @nestjs/cli
@前端进阶之旅: 代码已经复制到剪贴板

nest new project-name 创建一个项目

$ tree
.
├── README.md
├── nest-cli.json
├── package.json
├── src
│   ├── app.controller.spec.ts
│   ├── app.controller.ts
│   ├── app.module.ts
│   ├── app.service.ts
│   └── main.ts
├── test
│   ├── app.e2e-spec.ts
│   └── jest-e2e.json
├── tsconfig.build.json
└── tsconfig.json

2 directories, 12 files
@前端进阶之旅: 代码已经复制到剪贴板

以下是这些核心文件的简要概述:

  • app.controller.ts 带有单个路由的基本控制器示例。
  • app.module.ts 应用程序的根模块。
  • main.ts 应用程序入口文件。它使用 NestFactory 用来创建 Nest 应用实例。

main.ts 包含一个异步函数,它负责引导我们的应用程序:

import { NestFactory } from '@nestjs/core';
import { ApplicationModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(ApplicationModule);
  await app.listen(3000);
}
bootstrap();
@前端进阶之旅: 代码已经复制到剪贴板
  • NestFactory 暴露了一些静态方法用于创建应用实例
  • create() 方法返回一个实现 INestApplication 接口的对象, 并提供一组可用的方法

nest有两个支持开箱即用的 HTTP 平台:express 和 fastify。 您可以选择最适合您需求的产品

  • platform-express Express 是一个众所周知的 node.js 简约 Web 框架。 这是一个经过实战考验,适用于生产的库,拥有大量社区资源。 默认情况下使用 @nestjs/platform-express 包。 许多用户都可以使用 Express ,并且无需采取任何操作即可启用它。
  • platform-fastify Fastify 是一个高性能,低开销的框架,专注于提供最高的效率和速度。

# Nest控制器

Nest中的控制器层负责处理传入的请求, 并返回对客户端的响应。

控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。通常,每个控制器有

fe
  • 基础
    • 创建项目
    • Nest控制器
    • nest配置路由请求数据
    • Nest服务
    • Nest模块
    • 配置静态资源
    • 配置模板引擎
    • Cookie的使用
    • Session的使用
    • 跨域,前缀路径、网站安全、请求限速
    • 管道、守卫、拦截器、过滤器、中间件
      • 管道
      • 守卫
      • 装饰器
      • 拦截器
      • 过滤器
      • 中间件
    • 一例看懂中间件、守卫、管道、异常过滤器、拦截器
      • 中间件是请求的第一道关卡
      • 守卫是第二道关卡
      • 拦截器是第三道关卡
      • 管道是第四道关卡
    • 数据验证
  • 进阶
    • 配置抽离
    • 环境配置
    • 文件上传与下载
    • 实现图片随机验证码
    • 邮件服务
    • nest基于possport + jwt做登陆验证
    • 对数据库的密码加密:md5和bcryptjs
    • 角色权限
      • RBAC
      • 基于RBAC的设计
      • 数据库实体设计
      • 接口实现
      • 后端的权限访问
    • 定时任务
    • 接入Swagger接口文档
  • 数据库
    • nest连接Mongodb
    • typeORM操作Mysql数据库
    • nest统一处理数据库操作的查询结果
    • 数据库实体设计与操作
      • 实体设计
      • 抽离部分重复的字段:使用继承
      • 实体监听装饰器
    • typeorm增删改查操作
      • 多种访问数据库的方式
      • 增删改查的三种方式
    • typeorm使用事务的3种方式
    • typeorm 一对一关系设计与增删改查
    • typeorm 一对多和多对一关系设计与增删改查
    • typeorm 多对多关系设计与增删改查
      • 实体设计
      • 多对多增删改查
    • nest连接Redis
    • 集成redis实现单点登录
  • QA
    • Q:nestJS注入其他依赖时为什么还需要导入其module

← docker-compose/微信云托管/serverless之部署Egg项目一次node文件操作过多排查过程总结 →