前言
Nestjs 是一个用于构建高效可扩展的一个基于Node js 服务端的应用程序开发框架
并且完全支持typeScript 结合了 AOP 面向切面的编程方式
nestjs 还是一个spring MVC 的风格 其中有依赖注入 IOC 控制反转 都是借鉴了Angualr
nestjs 的底层代码运用了 express 和 Fastify 在他们的基础上提供了一定程度的抽象,同时也将其 API 直接暴露给开发人员。这样可以轻松使用每个平台的无数第三方模块 以上文字摘抄自CSDN博主「小满zs」的小满nestjs(第一章 介绍nestjs)
拓展:
nestjs的两个内置框架Express和Fastify:Express 社区成熟,组件丰富,内置的功能集合,Fastify则是一个高效性、低开销的框架。所以需求一个功能齐全、社区支持广泛选Express,追求高性能选Fastify。nestjs默认设置的是Express;
AOP 面向切面的编程:是面向对象的一种补充,就是把公共逻辑封(事务管理、日志、缓存等)装成切面和业务代码分离
OOP面向对象编程:面向对象是相对面向过程而言的,面向过程是指分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用
就可以了。
面相对象则是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。
比如洗衣服,面向过程是收集脏衣服,放入洗衣机,启动洗衣机,晾晒衣服
面向对象则是利用分门别类的思想提炼共同点,定义类,创建对象,通过调用对象方法解决问题
定义类:人有放东西进入机器的方法,可以启动机器的方法,洗衣机有清洗物品和烘干物品的方法
class Person {
constructor(thing, machine) {
this.thing= thing;
this.machine= machine;
}
push(){
console.log(`将${this.thing}放入${this.machine}`)
}
start(){
console.log(`启动了${this.machine}`)
}
}
class Washer{
constructor(thing) {
this.thing= thing;
}
wash(){
console.log(`清洗了${this.thing}`)
}
drying(){
console.log(`烘干了${this.thing}`)
}
}
const xm=new Person('衣服','洗衣机')
const washer1=new Washer('衣服')
xm.push()
xm.start()
washer1.wash()
washer1.drying()
前置准备工作
安装 Nest CLI
npm install @nestjs/cli -g
创建
创建名为nestapp的项目
nest new nestapp
按实际情况选择包管理工具
目录结构(以下内容引用自第一章 介绍nestjs):
+-- dist[目录] // 编译后的目录,用于预览项目
+-- node_modules[目录] // 项目使用的包目录,开发使用和上线使用的都在里边
+-- src[目录] // 源文件/代码,程序员主要编写的目录
| +-- app.controller.spec.ts // 对于基本控制器的单元测试样例
| +-- app.controller.ts // 控制器文件,可以简单理解为路由文件
| +-- app.module.ts // 模块文件,在NestJS里主要操作的就是模块,新增模块需要在此注入
| +-- app.service.ts // 服务文件,提供的服务文件,业务逻辑编写在这里
| +-- app.main.ts // 项目的入口文件,里边包括项目的主模块和监听端口号
+-- test[目录] // 测试文件目录,对项目测试时使用的目录,比如单元测试...
| +-- app.e2e-spec.ts // e2e测试,端对端测试文件,测试流程和功能使用
| +-- jest-e2e.json // jest测试文件,jset是一款简介的JavaScript测试框架
+-- .eslintrc.js // ESlint的配置文件
+-- .gitignore // git忽略文件,用于控制哪些文件不受Git管理
+-- .prettierrc // prettier配置文件,用于美化/格式化代码的
+-- nest-cli.json // nest-cli的配置文件,这个需要根据项目进行不同的配置
+-- package-lock.json // 防止由于包不同,导致项目无法启动的配置文件,固定包版本
+-- package.json // 项目依赖包管理文件和Script文件,比如如何启动项目的命令
+-- README.md // 对项目的描述文件,markdown语法
+-- tsconfig.build.json // TypeScript语法构建时的配置文件
+-- tsconfig.json // TypeScript的配置文件,控制TypeScript编译器的一些行为
进入到目录并升级所有包到最新版本
cd nestapp && npm up -latest