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的了解也很浅显,还需要继续学习,希望可以能和各位大佬交流一下,无论是代码还是日常,希望能够大家都能开心交流,最后希望各位码运昌隆,前程似锦!

相关推荐
棒棒的唐1 分钟前
WSL2用npm安装的openclaw,无法正常使用openclaw gateway start启动服务的问题
前端·npm·gateway
哔哩哔哩技术9 分钟前
使用Compose Navigation3进行屏幕适配
前端
咬人喵喵1 小时前
E2.COOL 平台深度解析:从特效分类到实战操作指南
前端·编辑器·svg
RisunJan2 小时前
Linux命令-named-checkzone
linux·前端
小陈工2 小时前
Python Web开发入门(十):数据库迁移与版本管理——让数据库变更可控可回滚
前端·数据库·人工智能·python·sql·云原生·架构
吹晚风吧2 小时前
解决vite打包,base配置前缀,nginx的dist包找不到资源
服务器·前端·nginx
weixin199701080163 小时前
《施耐德商品详情页前端性能优化实战》
前端·性能优化
不想上班只想要钱3 小时前
模板里 item.xxx 报错 ,报 item的类型为未知
前端·vue
阿琳a_3 小时前
在github上部署个人的vitepress文档网站
前端·vue.js·github·网站搭建·cesium
酉鬼女又兒3 小时前
零基础快速入门前端ES6 核心特性详解与蓝桥杯 Web 考点实践(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·职场和发展·蓝桥杯·es6·css3·html5