NestJS目录结构、安装和依赖

807 阅读1分钟

官网

docs.nestjs.com/

目录结构

|-- .env # 环境变量 - 默认使用
|-- .env.development # 环境变量 - @nestjs/config配置使用
|-- nest-cli.json
|-- package.json
|-- src
|   |-- app.controller.ts # app根模块 - 控制器
|   |-- app.module.ts # app根模块
|   |-- app.service.ts # app根模块 - 服务
|   |-- main.ts # 应用程序入口
|   |-- cats # cats模块
|   |   |-- cats.controller.ts
|   |   |-- cats.module.ts
|   |   |-- cats.service.ts
|   |   |-- dto # DTO(数据传输对象)类 - 数据校验
|   |   |   |-- create-cat.dto.ts
|   |   |   |-- find-cat.dto.ts
|   |   |   |-- update-cat.dto.ts
|   |   |-- entities # 实体类 - 数据库映射
|   |   |   |-- cat.entity.ts
|   |-- common # 通用文件
|   |   |-- filters # 过滤器 - 错误响应
|   |   |   |-- http-exception.filter.ts
|   |   |-- guard # 卫士 - 角色鉴权
|   |   |   |-- auth.guard.ts
|   |   |   |-- global.guard.ts
|   |   |-- interceptor #拦截器 - 成功响应
|   |   |   |-- transform.interceptor.ts
|   |   |-- middleware # 中间件 - 日志
|   |   |   |-- logger.middleware.ts
|   |   |   |-- logger2.middleware.ts
|   |   |-- pipe # 管道 - 数据类型校验
|   |       |-- global.pipe.ts
|   |-- user # user模块
|       |-- user.controller.ts
|       |-- user.module.ts
|       |-- user.service.ts
|       |-- dto
|       |   |-- create-user.dto.ts
|       |   |-- login-user.dto.ts
|       |-- entity
|           |-- user.entity.ts

文件含义:

  1. main.ts 入口文件
  2. app.xxx.ts 根模块(module + controller + service)
  3. xxx 子模块
    • module 模块,集合controller + service + entity,导入导出
    • controller 控制器:处理请求 + 返回响应
    • service 提供者:负责逻辑处理 + 数据层交互
    • dto dto数据传输对象类 - 数据校验
    • entity 实体类 - 数据库映射
  4. common通用文件
    • middleware 中间件
    • guard 卫士
    • interceptor 拦截器
    • pipe 管道
    • filter 异常过滤器

介绍

基于 Node.js 服务器端应用开发框架,类似(express、koa、nest、egg、midway)

特点:

  1. 支持 Typescript/javascript
  2. 支持 OOP (面向对象编程)、FP (函数式编程)、FRP (函数响应式编程)
  3. 底层处理HTTP,采用Express(默认)/Fastify

安装依赖

安装脚手架

npm i -g @nestjs/cli

创建项目

nest new project-name

生成模块

nest generate module xxx

必要依赖:

process环境变量配置

npm i -S @nestjs/config

DTO参数校验

npm i -S class-validator class-transformer

mysql数据库

npm i -S @nestjs/typeorm typeorm mysql2

bcryptjs 加密

npm i -S bcryptjs

jwt认证

npm i -S @nestjs/jwt

其他依赖:

swagger接口文档

npm i -S @nestjs/swagger swagger-ui-express

socket消息

npm i -S @nestjs/websockets @nestjs/platform-socket.io socket.io

其他:

中文文档: nestjs.bootcss.com/index.html

Nest通关秘籍 juejin.cn/book/722698…