Nestjs|01-hello world

471 阅读2分钟

这是我参与8月更文挑战的第11天,活动详情查看:8月更文挑战

近期因开始往全栈方向发展,接触新的项目的技术栈的框架是nextjs、typescript等。所以接下来的将持续学习并更新相关技术栈内容。

Nestjs

Nest是一个NodeJS服务端框架。

NestJs提供架构主张,有一套自己的架构模式,开发者需按照NestJS要求的架构来组织代码。

优点:构建高效、可靠的、高可拓展、松散耦合、易于测试

eg: Express/Koa/Fastify仅提供HTTP服务器封装和异步流程串并行的基础框架

Nest是Nodejs版的Spring框架

  • 基于Express/Fastify封装Http请求和路由
  • 支持其他Web框架或库
  • 使用TypeScript
  • 使用了OOP、FP、FRP相关理念,
  • 使用依赖注入,面向切面编程等相关设计思路

Hello world

新的开始,新的hello world。

可以根据官网Start,开启第一个项目

通过使用脚手架Nest CLI生成一个简单的项目,如下命令

$ npm i -g @nestjs/cli
$ nest new nest-project  #  nest-project 是项目名称

将创建nest-project目录,安装node模块和一些其他样板文件,并将创建 一个 src 目录,目录中包含几个核心文件

src
——app.controller.spec.ts
——app.controller.ts
——app.module.ts
——app.service.ts
——main.ts
  • app.controller.spec.ts 控制器的单元测试
  • app.controller.ts带有单个路由的基本控制器示例。
  • app.module.ts应用程序的根模块。
  • app.service.ts带有单个方法的基础service层
  • main.ts应用程序入口文件。它使用 NestFactory 用来创建 Nest 应用实例。

执行命令:npm run start ,则将启动应用程序监听端口号3000。在应用程序运行时,打开浏览器并访问 http://localhost:3000,你将看到 hello world 信息。

NestJS Framework

Client <---request/response---> Controller <---使用service/注入service---> Service <---操作db/返回持久化数据---> Data Access

image-20210811233127180

  • Controller层 负责接收请求和返回响应

    • 与路由系统配合使用,路由系统将请求分发给相对应的Controller处理
    • Nest路由是去中心化的
  • Service层 负责提供方法和操作,只处理业务逻辑。

  • DataAccess 负责访问数据库中的数据

但是,MVC架构是不同的。

image-20210811233315459

\