Nestjs学习笔记(第一天)

本文介绍了Nestjs,一个用于构建高效Node.js服务器应用的框架,支持TypeScript,采用AOP编程和依赖注入。文章详细讲解了Nestjs的架构、内置框架Express和Fastify的选择,以及面向对象和面向切面编程的概念,并展示了基本的项目结构和初始化步骤。
摘要由CSDN通过智能技术生成

前言

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
  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值