Nest.js初遇

大家好,我是穷小白,人如其名,是一个前端小白,希望能和各位大佬学习,以后主要会发一些前端的文章,写的不好,请各位多多担待,我也是一个动漫爱好者,喜欢花里胡哨,希望可以和大家交流一下,可以是前端相关的或者是动漫番剧或者模型手办什么的!

前言

最近看到各种"开猿节流,降本增笑"的消息,真没想到大厂形式这么严峻,内心有点焦虑,不过也没什么办法,改变不了环境,只能尽力提升自己。

Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的开发框架。它利用 JavaScript 的渐进增强的能力,使用并完全支持 TypeScript (仍然允许开发者使用纯 JavaScript 进行开发),并结合了 OOP (面向对象编程)、FP (函数式编程)和 FRP (函数响应式编程),这是官网对它的介绍,直白点说就是帮我们前端程序员实现一些后端逻辑。

为什么使用nest.js

nest.js与express、koa一样都是基于node的Web框架,在底层,Nest 构建在强大的 HTTP 服务器框架上,例如 Express (默认),并且还可以通过配置从而使用 Fastify

Nest 在这些常见的 Node.js 框架 (Express/Fastify) 之上提高了一个抽象级别,但仍然向开发者直接暴露了底层框架的 API。这使得开发者可以自由地使用适用于底层平台的无数的第三方模块。

Express的模型是线型模型,而Koa则是洋葱型模型。

Express线性模型

js 复制代码
const express = require("express");
const app = express();
const port = 3000;

app.use((req, res, next) => {
  res.write("hello");
  next();
});
app.use((req, res, next) => {
  res.set("Content-Type", "text/html;charset=utf-8");
  next();
});
app.use((req, res, next) => {
  res.write("world");
  res.end();
});
app.listen(3000);

Koa洋葱模型

js 复制代码
import * as Koa from "koa";
const app = new Koa();
app.use(async (ctx, next) => {
  ctx.body = "hello";
  await next();
  ctx.body += "world";
});
app.use(async (ctx) => {
  ctx.set("Content-Type", "text/html;charset=utf-8");
});
app.listen(3000);

但它们都不推荐做大型、复杂的应用,nest.js正好具备他们所没有的,Nest.js 强调面向服务的架构,使用模块、控制器和服务的概念,使得项目更加组织有序。它支持多种 HTTP 框架,内置了对 GraphQL 和 WebSockets 的支持,nest.js也被开玩笑戏称为小spring。

刚才应该属于官方的说法,我之所以开始学习nest.js还是看了大圣老师的视频,了解了点海外远程的工作,里面有很多机会,最近又看了些裁员的消息,反正多学点终归有好处,海外远程的要求有些都要求vue或者react全栈,明确提了nest。所以想学一下。看了一下官网看了神光的小册,对于我这种小白来说确实有帮助。话不多说,直接开始体验nest.

nest体验

首先需要安装一下Nest CLI

js 复制代码
$ npm i -g @nestjs/cli  
$ nest new hello-nest

这里可以随便选择,我按照官网选择npm

等待运行完成完成即可,然后运行npm run start:dev,访问localhost:3000就可以看到对应的文件

main.js:这是应用程序的入口文件。负责创建Nest应用实例并启动应用,它指定应用程序监听的端口。

app.module.ts:这是应用程序的主模块。在nest.js中应用程序由模块构成,而主模块是应用程序的根模块, 这个文件定义了应用程序的基本配置和引用模块的地方。

app.controller.ts:这是一个控制器类,控制器负责处理来自客户端的 HTTP 请求。在这个文件中,你可以定义一些处理不同路由的控制器方法。

app.service.ts:这是一个服务类,服务负责处理业务逻辑。服务通常由控制器调用,用于封装和处理与数据存储、外部 API 交互等相关的操作。

定义的这些接口可以去postman上查看,当然nest.js也支持导出swagger很方便。

结语

这篇文章主要是想介绍一下nest.js,大部分摘抄自官网,我对nest的了解也很浅显,还需要继续学习,希望可以能和各位大佬交流一下,无论是代码还是日常,希望能够大家都能开心交流,最后希望各位码运昌隆,前程似锦!

相关推荐
长路 ㅤ   几秒前
vue-live2d看板娘集成方案设计使用教程
前端·javascript·vue.js·live2d
Fan_web17 分钟前
jQuery——事件委托
开发语言·前端·javascript·css·jquery
安冬的码畜日常19 分钟前
【CSS in Depth 2 精译_044】第七章 响应式设计概述
前端·css·css3·html5·响应式设计·响应式
莹雨潇潇1 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
Jiaberrr1 小时前
Element UI教程:如何将Radio单选框的圆框改为方框
前端·javascript·vue.js·ui·elementui
Tiffany_Ho2 小时前
【TypeScript】知识点梳理(三)
前端·typescript
安冬的码畜日常3 小时前
【D3.js in Action 3 精译_029】3.5 给 D3 条形图加注图表标签(上)
开发语言·前端·javascript·信息可视化·数据可视化·d3.js
小白学习日记4 小时前
【复习】HTML常用标签<table>
前端·html
丁总学Java4 小时前
微信小程序-npm支持-如何使用npm包
前端·微信小程序·npm·node.js