V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cpf
V2EX  ›  Node.js

nodejs 后端框架的选择

  •  2
     
  •   cpf · 2023-01-16 22:56:51 +08:00 · 14756 次点击
    这是一个创建于 711 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    74 条回复    2023-05-30 17:39:21 +08:00
    cpf
        1
    cpf  
    OP
       2023-01-16 23:00:01 +08:00
    大背景:我是一名前端,最近在搞毕设
    Hanggi
        2
    Hanggi  
       2023-01-16 23:04:14 +08:00
    选 Nest.js 就好,其他的没有特别理由就不用考虑了。
    ysc3839
        3
    ysc3839  
       2023-01-16 23:04:29 +08:00 via Android
    啥需求?只是对接数据库的话用 Koa+TypeORM 吧
    estk
        4
    estk  
       2023-01-16 23:10:52 +08:00 via iPhone
    小需求 3 楼,大需求 NestJS
    Leviathann
        5
    Leviathann  
       2023-01-16 23:13:23 +08:00
    trpc 比较有冲击力
    方便毕设里吹
    本身自带 server 端
    也可以和 next.js fastify express 结合使用
    crysislinux
        6
    crysislinux  
       2023-01-17 00:09:12 +08:00 via Android
    要简单直观还是 express 这种传统框架好。nestjs 概念细节挺多的。说实话我更喜欢 express 那种 route 定义。
    iwdmb
        7
    iwdmb  
       2023-01-17 00:12:07 +08:00
    项目不大求稳定选 Express 久经考验
    https://expressjs.com/
    IvanLi127
        8
    IvanLi127  
       2023-01-17 00:38:40 +08:00 via Android   ❤️ 2
    毕设直接 express 或 fastify 吧,避免折腾多余的东西
    heasy
        9
    heasy  
       2023-01-17 00:52:55 +08:00 via Android
    nestjs
    me221
        10
    me221  
       2023-01-17 00:55:35 +08:00
    蹲一个 trpc 是什么东西.

    我也是看了半天没看懂
    shuimugan
        11
    shuimugan  
       2023-01-17 04:04:37 +08:00   ❤️ 1
    NestJS 比较正统,Midway 会被阿里味毒打,Directus 比较适合单人干活偷懒省事
    ericgui
        12
    ericgui  
       2023-01-17 04:24:34 +08:00
    @ysc3839 prisma 怎么样
    cuebyte
        13
    cuebyte  
       2023-01-17 05:43:12 +08:00
    Redwood.js 了解一下
    liveoppo
        14
    liveoppo  
       2023-01-17 06:01:15 +08:00
    express 简单明了
    nextjs 可得学相当时间
    netabare
        15
    netabare  
       2023-01-17 07:11:19 +08:00 via Android   ❤️ 1
    @me221 +1 ,我也有点好奇(
    kongkx
        16
    kongkx  
       2023-01-17 07:40:26 +08:00 via iPhone
    从积累经验的角度看,选 nestjs
    haole2022
        17
    haole2022  
       2023-01-17 08:15:17 +08:00
    小项目可以试试 trpc

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

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

    后端更新了 schema / function, 前端会自动报错,这样写起来很放心
    wjx0912
        18
    wjx0912  
       2023-01-17 08:47:46 +08:00
    nestjs 吧。唯一的缺点就是设置断点后速度很慢
    dayeye2006199
        19
    dayeye2006199  
       2023-01-17 08:58:53 +08:00
    接口不多就 express 把.
    学 nestjs 的时间,express 都撸完了
    zhangxh1023
        20
    zhangxh1023  
       2023-01-17 09:10:25 +08:00
    如果不想搞的很复杂的话,midwayjs 因为自带一些进程管理,单机跑什么的或者有这方面的需求可以简单很多。
    个人觉得相对来说 nestjs 上手会复杂一些,eggjs 和 midwayjs 中文文档都完善一些。
    如果让我选择,公司项目我选 eggjs ,简单干完活就完事儿了(话说之前一个公司项目我用了 midwayjs ,后悔死了,后面直接变成 anyscript )。如果是自己玩,我选 nestjs ,好玩儿,看起来牛逼。
    wu67
        21
    wu67  
       2023-01-17 09:14:55 +08:00
    要快速出货, express 或者 koa 一把梭. nestjs 和 prisma 真的是把我劝退了, 入门曲线太那啥了...有那精力, 我为什么不直接来套 java 生态
    TomVista
        22
    TomVista  
       2023-01-17 09:23:00 +08:00
    express 这种就行了,我一直想不明白把 spring 那套搬到 node 上是想干啥,java 不香吗
    zhangky
        23
    zhangky  
       2023-01-17 09:34:12 +08:00
    express
    SanjinGG
        24
    SanjinGG  
       2023-01-17 09:37:03 +08:00
    直接 koa 吧,你现在需求也只是为前端提供数据支持,nest 学习成本太大了,不深耕后端选 nest 没有必要。
    superedlimited
        25
    superedlimited  
       2023-01-17 09:42:47 +08:00
    nest.js 并不是 spring 那一套,它是源于 angular.js
    hahiru
        26
    hahiru  
       2023-01-17 09:42:58 +08:00
    express ,简单方便快捷。我 10 分钟就能弄完的东西弄其他那么复杂的干啥。
    sjhhjx0122
        27
    sjhhjx0122  
       2023-01-17 09:44:51 +08:00   ❤️ 1
    @superedlimited nest 并不是 angular.js 那一套,它是源于 angular ,这两个东西还是天差地别的
    L1shen
        28
    L1shen  
       2023-01-17 09:59:39 +08:00
    可以看看 https://create.t3.gg/
    这个集成的技术栈
    libook
        29
    libook  
       2023-01-17 10:16:47 +08:00
    只写接口的话 Express 开箱即用,希望自己搭配中间件的话 Koa 就可以。
    其他的看你是否有其他语言框架的架构思想需要,有一堆参考其他语言框架思想的框架。
    weixiangzhe
        30
    weixiangzhe  
       2023-01-17 10:36:39 +08:00
    先 github 找个自个能看懂的 demo 先,express 也行嘛,nestjs 确实比较前期花时间
    loading
        31
    loading  
       2023-01-17 10:50:01 +08:00
    看看 pocketbase 吧,后端直接不用管。你新建个文件夹放你的前端文件就行了。
    Fca
        32
    Fca  
       2023-01-17 11:05:41 +08:00
    eggjs
    leeho
        33
    leeho  
       2023-01-17 11:07:51 +08:00
    nestjs ,省心省事
    lovedebug
        34
    lovedebug  
       2023-01-17 11:07:56 +08:00
    推荐 nestjs ,已经在云服务上大量使用
    FrankFang128
        35
    FrankFang128  
       2023-01-17 11:13:44 +08:00
    Next.js > Nest.js > express
    hutoer
        36
    hutoer  
       2023-01-17 11:14:09 +08:00
    fastify 足够了,nestjs 太复杂,自己用用完全没必要
    orluna
        37
    orluna  
       2023-01-17 11:17:56 +08:00
    midway
    nullEDYT
        38
    nullEDYT  
       2023-01-17 11:18:07 +08:00
    折腾自己吧,怎么难怎么来
    tonytonychopper
        39
    tonytonychopper  
       2023-01-17 11:18:14 +08:00
    直接 nestjs
    wwatson
        40
    wwatson  
       2023-01-17 11:20:49 +08:00   ❤️ 1
    2 、30 个接口的话直接用 Nestjs 吧,开箱即用,搭配 prisma 非常丝滑,用 Express 还需要自己一点一点组轮子。别用阿里的东西,面向 kpi 的产物,用了会变得不幸。
    334132462
        41
    334132462  
       2023-01-17 11:21:21 +08:00
    next.js 也可以 特喜欢那种文件目录既路由的感觉 约定既配 并且也可以写 api
    cpf
        42
    cpf  
    OP
       2023-01-17 11:27:16 +08:00
    非常感谢大家的建议,我这个毕设是打算后面继续维护迭代的,所以不想草草了事,当时有考虑过`express`(因为我一开始学的就是`express`,写几个接口很方便),但是我不太懂后端,比如文件结构之类的,如果单单用`express`的话,我可能写出来的代码会很难看,然后好像也没有 ts 支持,今天上午想了一上午,还是决定使用`nestjs`,虽然我不懂那些依赖注入、装饰器的那些原理,但是我看着挺舒服的,应该也能好好的写下去,加油!

    > `trpc`真的没有大佬在用吗?(干瞪眼)我看`star`数 2022 年上涨的挺快的
    clf
        43
    clf  
       2023-01-17 11:29:50 +08:00
    整花里胡哨一点可以搭一个 laf 的 serverless 平台,然后写云函数。
    Pipecraft
        44
    Pipecraft  
       2023-01-17 11:42:13 +08:00
    前几天看到的一篇文章:为何开发人员开始喜欢 tRPC 啦? https://linux-china.davao.page/blog/2023-01-14-why-trpc/
    sparkle2015
        45
    sparkle2015  
       2023-01-17 11:46:00 +08:00
    其实也可以不用前后端分离。如果不前后端分离的话,可以看看 remix ( https://remix.run/ ) 这个框架。
    nerocho
        46
    nerocho  
       2023-01-17 11:48:29 +08:00
    如果要在 midwayjs 和 nestjs 二选一的话,建议 nestjs ;或者就纯纯的 koajs 或者 expressjs 不香么,简单小巧项目清真。个人觉得 nodejs 后端用 typescript 挺烦的,不论是调试还是打包编译啥的挺慢的,nodejs 本身语法跟进挺快的,没必要搞啥 ts 。或者你要写 ts ,直接写 deno 不就完了,最后说一句 golang 真香。。。
    gimp
        47
    gimp  
       2023-01-17 11:58:30 +08:00
    Express 一把梭
    cktsun
        48
    cktsun  
       2023-01-17 12:26:52 +08:00 via Android
    tRPC + express/fastify 最好
    cktsun
        49
    cktsun  
       2023-01-17 12:29:05 +08:00 via Android
    t3 stack 很流行 trpc 這一套, 又支援邊緣計算, nestjs 就大可不必了
    如果你不肯挑戰新事物, 你就過時了
    shuson
        50
    shuson  
       2023-01-17 12:40:40 +08:00
    试试 headless CMS ,例如 strapi ,keystone 之类的
    如果你是前端,不擅长后台+数据库
    cktsun
        51
    cktsun  
       2023-01-17 12:43:18 +08:00 via Android
    trpc 是什麼?好不好用?下手去用才知道
    要配合 Typescript, 至於那些說 Node+TS 麻煩不如用 deno 的人, 你不用看, 他們壓根沒試過
    看自己想選擇哪一些你認為合適的技術, 但不要怕設置麻煩
    RRRoger
        52
    RRRoger  
       2023-01-17 13:31:11 +08:00
    小项目可以使用 express 挺简单的
    dc2002007
        53
    dc2002007  
       2023-01-17 13:50:11 +08:00
    thinkjs 简单使用,不费脑子
    TWorldIsNButThis
        54
    TWorldIsNButThis  
       2023-01-17 14:10:35 +08:00 via iPhone
    2023 年自己的项目显然是 trpc
    对于全栈 web 开发有划时代意义的全链路类型安全
    JavenXiao
        55
    JavenXiao  
       2023-01-17 14:23:51 +08:00
    我推荐个二合一的框架:Meteor ( https://www.meteor.com

    可以用 react 语法前后端一把梭
    xieren58
        56
    xieren58  
       2023-01-17 14:26:46 +08:00
    推荐一个小众的, 我已经用在生产一年多了. https://moleculer.services/
    hutoer
        57
    hutoer  
       2023-01-17 14:53:03 +08:00
    @xieren58 我也在用 moleculer ,看到 moleculer 后果断放弃 nestjs
    uni
        58
    uni  
       2023-01-17 15:34:45 +08:00
    说不定你只需要 strapi……
    learningman
        59
    learningman  
       2023-01-17 15:50:55 +08:00
    想要强类型为啥不 graphql
    LiTangDingZhen
        60
    LiTangDingZhen  
       2023-01-17 15:52:25 +08:00
    小项目用 express koa 就行
    kxxoling
        61
    kxxoling  
       2023-01-17 16:16:24 +08:00
    实用一下 redwood ,感觉很完善了,一个大而全的全栈框架。
    CoderLife
        62
    CoderLife  
       2023-01-17 16:23:17 +08:00
    eggjs
    LawlietZ
        63
    LawlietZ  
       2023-01-17 16:29:11 +08:00
    egg
    longjiahui
        64
    longjiahui  
       2023-01-17 21:09:18 +08:00
    egg
    Al0rid4l
        65
    Al0rid4l  
       2023-01-18 00:43:56 +08:00
    底层的 express/koa/fastify, 三个里面建议 fastify, 不建议 express
    大而全的就 nestjs
    headless cms 就 strapi
    ikidou
        66
    ikidou  
       2023-01-18 10:34:06 +08:00 via Android
    歪个楼,简单写 api 可以试试 cloudflare workers/ pages functions ,支持 kv 数据库,最近好像支持 sql 了,可以部署到他的服务器上,不知道和楼上提到的框架那个写起来更快
    kylebing
        67
    kylebing  
       2023-01-30 14:54:24 +08:00
    express 就足够好用了感觉,我的项目除了自行重启更新功能外,就没出过问题。
    一个普通项目 + 一个 websocket 服务

    arfaWong
        68
    arfaWong  
       2023-02-02 08:39:51 +08:00
    @haole2022 #17 看你的介绍,感觉 trpc 和 grpc 是很像的东西
    YOUXIAZ
        69
    YOUXIAZ  
       2023-02-13 16:16:58 +08:00
    midway
    esee
        70
    esee  
       2023-03-10 00:46:45 +08:00
    @cpf 有点好奇,如果是自己一个人写,前后端一把梭的,真的有必要上 ts 么。我反正自己写的时候就喜欢纯 js 。。
    chaselen
        71
    chaselen  
       2023-04-04 08:43:58 +08:00
    @esee #70 小项目 js ,大点的 ts 。要不到处都是 any ,代码提示都没有,写一堆 jsdoc 也挺麻烦的
    fairylyness
        72
    fairylyness  
       2023-04-24 18:40:32 +08:00
    @esee 感觉没啥必要,ts 感觉多人合作的时候更有用,或者是项目大了的情况下上 ts
    rockey543400
        73
    rockey543400  
       2023-05-10 02:41:57 +08:00 via iPhone
    强推 directus hasura
    特别是 hasura 很方便就能实现分布式
    directus 的优势是方便,连后台管理界面都不用写了
    Jame00001
        74
    Jame00001  
       2023-05-30 17:39:21 +08:00
    我之前做博客也试过 nestjs ,后来放弃了,纯纯的浪费时间。
    它是一种另起炉灶的框架,什么都是重新定义,什么都要重新学,完全与其他技术隔离(除了 ts ),类似 flutter 。但 flutter 的地位不是他能比的,只增加 ts 经验与 nodejs 几乎无关找工作几乎无贡献。
    学这种冷门复杂的框架,几乎没有任何收益,有那精力直接用 java 不好吗。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   952 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:13 · PVG 04:13 · LAX 12:13 · JFK 15:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.