Nodejs 后端框架的选择

发布于 1周前 作者 vueper 来自 nodejs/Nestjs

Nodejs 后端框架的选择

只想安分的写一些接口,给自己的项目用,可能大概有 2 ,30 个接口吧 看了这么久,看中两个,nestjsmidwayjs,两个的使用方式现在看着挺像的 有木有过来人给给建议,我应该选哪个? 前端用的 React,想搞个前后端分离的项目

小声提问:trpc 和上面那两个的区别是什么,去到官网看,没看太懂

75 回复

大背景:我是一名前端,最近在搞毕设


选 Nest.js 就好,其他的没有特别理由就不用考虑了。

啥需求?只是对接数据库的话用 Koa+TypeORM 吧

小需求 3 楼,大需求 NestJS

trpc 比较有冲击力
方便毕设里吹
本身自带 server 端
也可以和 next.js fastify express 结合使用

要简单直观还是 express 这种传统框架好。nestjs 概念细节挺多的。说实话我更喜欢 express 那种 route 定义。

项目不大求稳定选 Express 久经考验
https://expressjs.com/

毕设直接 express 或 fastify 吧,避免折腾多余的东西

蹲一个 trpc 是什么东西.

我也是看了半天没看懂

NestJS 比较正统,Midway 会被阿里味毒打,Directus 比较适合单人干活偷懒省事

prisma 怎么样

Redwood.js 了解一下

express 简单明了
nextjs 可得学相当时间

+1 ,我也有点好奇(

从积累经验的角度看,选 nestjs

小项目可以试试 trpc

正常前后端分离,后端写完 api 后,前端需要写一堆 boilerplate 代码调用 api ,而且不知道数据的具体 schema

使用 trpc ,可以直接调用后端 function 名称获取数据,通过 typescript 也能看到数据具体 schema

后端更新了 schema / function, 前端会自动报错,这样写起来很放心

nestjs 吧。唯一的缺点就是设置断点后速度很慢

接口不多就 express 把.
学 nestjs 的时间,express 都撸完了

如果不想搞的很复杂的话,midwayjs 因为自带一些进程管理,单机跑什么的或者有这方面的需求可以简单很多。
个人觉得相对来说 nestjs 上手会复杂一些,eggjs 和 midwayjs 中文文档都完善一些。
如果让我选择,公司项目我选 eggjs ,简单干完活就完事儿了(话说之前一个公司项目我用了 midwayjs ,后悔死了,后面直接变成 anyscript )。如果是自己玩,我选 nestjs ,好玩儿,看起来牛逼。

要快速出货, express 或者 koa 一把梭. nestjs 和 prisma 真的是把我劝退了, 入门曲线太那啥了…有那精力, 我为什么不直接来套 java 生态

express 这种就行了,我一直想不明白把 spring 那套搬到 node 上是想干啥,java 不香吗

直接 koa 吧,你现在需求也只是为前端提供数据支持,nest 学习成本太大了,不深耕后端选 nest 没有必要。

nest.js 并不是 spring 那一套,它是源于 angular.js

express ,简单方便快捷。我 10 分钟就能弄完的东西弄其他那么复杂的干啥。

nest 并不是 angular.js 那一套,它是源于 angular ,这两个东西还是天差地别的

可以看看 https://create.t3.gg/
这个集成的技术栈

只写接口的话 Express 开箱即用,希望自己搭配中间件的话 Koa 就可以。
其他的看你是否有其他语言框架的架构思想需要,有一堆参考其他语言框架思想的框架。

先 github 找个自个能看懂的 demo 先,express 也行嘛,nestjs 确实比较前期花时间

看看 pocketbase 吧,后端直接不用管。你新建个文件夹放你的前端文件就行了。

nestjs ,省心省事

推荐 nestjs ,已经在云服务上大量使用

Next.js > Nest.js > express

fastify 足够了,nestjs 太复杂,自己用用完全没必要

折腾自己吧,怎么难怎么来

直接 nestjs

2 、30 个接口的话直接用 Nestjs 吧,开箱即用,搭配 prisma 非常丝滑,用 Express 还需要自己一点一点组轮子。别用阿里的东西,面向 kpi 的产物,用了会变得不幸。

next.js 也可以 特喜欢那种文件目录既路由的感觉 约定既配 并且也可以写 api

非常感谢大家的建议,我这个毕设是打算后面继续维护迭代的,所以不想草草了事,当时有考虑过express(因为我一开始学的就是express,写几个接口很方便),但是我不太懂后端,比如文件结构之类的,如果单单用express的话,我可能写出来的代码会很难看,然后好像也没有 ts 支持,今天上午想了一上午,还是决定使用nestjs,虽然我不懂那些依赖注入、装饰器的那些原理,但是我看着挺舒服的,应该也能好好的写下去,加油!

> trpc真的没有大佬在用吗?(干瞪眼)我看star数 2022 年上涨的挺快的

整花里胡哨一点可以搭一个 laf 的 serverless 平台,然后写云函数。

前几天看到的一篇文章:为何开发人员开始喜欢 tRPC 啦? https://linux-china.davao.page/blog/2023-01-14-why-trpc/

其实也可以不用前后端分离。如果不前后端分离的话,可以看看 remix ( https://remix.run/ ) 这个框架。

如果要在 midwayjs 和 nestjs 二选一的话,建议 nestjs ;或者就纯纯的 koajs 或者 expressjs 不香么,简单小巧项目清真。个人觉得 nodejs 后端用 typescript 挺烦的,不论是调试还是打包编译啥的挺慢的,nodejs 本身语法跟进挺快的,没必要搞啥 ts 。或者你要写 ts ,直接写 deno 不就完了,最后说一句 golang 真香。。。

Express 一把梭

tRPC + express/fastify 最好

t3 stack 很流行 trpc 這一套, 又支援邊緣計算, nestjs 就大可不必了
如果你不肯挑戰新事物, 你就過時了

试试 headless CMS ,例如 strapi ,keystone 之类的
如果你是前端,不擅长后台+数据库

trpc 是什麼?好不好用?下手去用才知道
要配合 Typescript, 至於那些說 Node+TS 麻煩不如用 deno 的人, 你不用看, 他們壓根沒試過
看自己想選擇哪一些你認為合適的技術, 但不要怕設置麻煩

小项目可以使用 express 挺简单的

thinkjs 简单使用,不费脑子

2023 年自己的项目显然是 trpc
对于全栈 web 开发有划时代意义的全链路类型安全

我推荐个二合一的框架:Meteor ( https://www.meteor.com

可以用 react 语法前后端一把梭

推荐一个小众的, 我已经用在生产一年多了. https://moleculer.services/

我也在用 moleculer ,看到 moleculer 后果断放弃 nestjs

说不定你只需要 strapi……

想要强类型为啥不 graphql

小项目用 express koa 就行

实用一下 redwood ,感觉很完善了,一个大而全的全栈框架。

底层的 express/koa/fastify, 三个里面建议 fastify, 不建议 express
大而全的就 nestjs
headless cms 就 strapi

歪个楼,简单写 api 可以试试 cloudflare workers/ pages functions ,支持 kv 数据库,最近好像支持 sql 了,可以部署到他的服务器上,不知道和楼上提到的框架那个写起来更快

express 就足够好用了感觉,我的项目除了自行重启更新功能外,就没出过问题。
一个普通项目 + 一个 websocket 服务

#17 看你的介绍,感觉 trpc 和 grpc 是很像的东西

有点好奇,如果是自己一个人写,前后端一把梭的,真的有必要上 ts 么。我反正自己写的时候就喜欢纯 js 。。

#70 小项目 js ,大点的 ts 。要不到处都是 any ,代码提示都没有,写一堆 jsdoc 也挺麻烦的

感觉没啥必要,ts 感觉多人合作的时候更有用,或者是项目大了的情况下上 ts

强推 directus hasura
特别是 hasura 很方便就能实现分布式
directus 的优势是方便,连后台管理界面都不用写了

我之前做博客也试过 nestjs ,后来放弃了,纯纯的浪费时间。
它是一种另起炉灶的框架,什么都是重新定义,什么都要重新学,完全与其他技术隔离(除了 ts ),类似 flutter 。但 flutter 的地位不是他能比的,只增加 ts 经验与 nodejs 几乎无关找工作几乎无贡献。
学这种冷门复杂的框架,几乎没有任何收益,有那精力直接用 java 不好吗。

在选择Node.js后端框架时,你需要考虑项目的规模、团队的熟悉程度、社区支持、以及框架的特性和性能。以下是几个流行的Node.js后端框架及其简要介绍:

  1. Express

    • 简介:Express是一个轻量、灵活的Node.js Web应用框架,提供了一系列强大的特性来帮助你创建各种Web和移动设备应用。
    • 示例代码
      const express = require('express');
      const app = express();
      const port = 3000;
      
      app.get('/', (req, res) => {
        res.send('Hello World!');
      });
      
      app.listen(port, () => {
        console.log(`Server is running at http://localhost:${port}`);
      });
      
  2. Koa

    • 简介:Koa是一个新的web框架,由Express原班人马打造,致力于成为一个更小、更富有表现力、更健壮的基石用于web应用和API开发。
    • 特性:Koa的中间件机制更灵活,允许你更细致地控制请求和响应的生命周期。
  3. NestJS

    • 简介:NestJS是一个用于构建高效、可靠和可扩展的服务器端应用程序的框架。它使用TypeScript(但也允许纯JavaScript)并完全支持装饰器、异步/等待等现代JavaScript特性。
    • 特性:NestJS提供了依赖注入、模块化和面向对象的编程模式,使大型项目的维护变得更加容易。

选择哪个框架取决于你的具体需求和偏好。如果你需要一个简单、轻量级的解决方案,Express可能是最好的选择。如果你需要更高级的特性和结构,可以考虑使用NestJS。

回到顶部