NodeJS 框架选择 Express VS Koa2 VS Nestjs

本文含有: Express/Koa2/Nestjs框架的优缺点, Express适合快速快发, Koa2适合洋葱模型, Nestjs适用于TypeScript

昨天写了个 Nodejs 小项目,当初技术选型时有点迷茫不知道选哪个框架,所以今天就有这篇博文了。

关于这三个框架的性能/优缺点,这里就不再赘述了,仅从个人角度出发。

省流总结:选 Express 准没错,够简单快速。

Express

Express:如果你需要在短时间内开发一个项目,那你选 Express 准没错,你无须考虑过多内容,直接按照需求编写代码,语法也很好理解。

非常简单明了的请求格式,没有过多花里胡哨的东西,大道至简,因此我昨天的项目就选择了这个框架,因为我需要在短时间内完成项目,怎么简单怎么来。

router.get("/", function (req, res, next) {
  res.render("index", { title: "Express" });
});

Koa2

洋葱模型,一个在 Express 基础上结合了 async/await 的框架。

你需要清楚你是否需要 洋葱模型 在决定是否使用 Koa2 ,否则我建议使用 Express

因为 Koa 社区文章相比 Express 会少很多,你在使用的时候可能会遇到不便。

这个案例就很好的把洋葱模型给展示出来

const Koa = require("koa");
const app = new Koa();
const mid1 = () => async (ctx, next) => {
  ctx.body = `<h3>请求 >>> 第一层中间件</h3>`;
  await next();
  ctx.body += `<h3>响应 <<< 第一层中间件</h3>`;
};
const mid2 = () => async (ctx, next) => {
  ctx.body += `<h3>请求 >>> 第二层中间件</h3>`;
  await next();
  ctx.body += `<h3>响应 <<< 第二层中间件</h3>`;
};
app.use(mid1());
app.use(mid2());
app.use(async (ctx, next) => {
  ctx.body += `<p style="color: red">Koa 核心处理业务</p>`;
});
app.listen(6060);

// 请求 >>> 第一层中间件
// 请求 >>> 第二层中间件
// Koa 核心处理业务
// 响应 <<< 第二层中间件
// 响应 <<< 第一层中间件

Nestjs

一个非常重的 NodeJS+TypeScript 框架,我有个项目就是用 NestJS 写的,依赖项就足足 40 个。

一个模块的构成再也不像前面的那样单文件,而是 3 个文件 modulecontrollerservice,具体文件的内容这里就不赘述了,看我之前的文章。

我对这框架的评价是,Nodejs 中的 Spring Boot,如果你有时间慢慢编写 TypeScript 规范,可以选它,如果你不想写规范/接口,那就别选它了,老老实实用 Express 吧。

如果是个人开发我建议别碰,有这时间不如去玩 Spring Boot

Licensed under CC BY-NC-SA 4.0
本博客已稳定运行
发表了53篇文章 · 总计28.17k字
使用 Hugo 构建
主题 StackJimmy 设计