大家好,我是穷小白,人如其名,是一个前端小白,希望能和各位大佬学习,以后主要会发一些前端的文章,写的不好,请各位多多担待,我也是一个动漫爱好者,喜欢花里胡哨,希望可以和大家交流一下,可以是前端相关的或者是动漫番剧或者模型手办什么的!
前言
最近看到各种"开猿节流,降本增笑"的消息,真没想到大厂形式这么严峻,内心有点焦虑,不过也没什么办法,改变不了环境,只能尽力提升自己。
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的了解也很浅显,还需要继续学习,希望可以能和各位大佬交流一下,无论是代码还是日常,希望能够大家都能开心交流,最后希望各位码运昌隆,前程似锦!