BeijingBaby
V2EX  ›  Node.js

2024 年了,写后端 API Node.js 生态用哪个框架?

  •  
  •   BeijingBaby ·
    PRO
    · Aug 21, 2024 · 16657 views
    This topic created in 806 days ago, the information mentioned may be changed or developed.

    前端 next.js ,但是写后端还是很不足了。

    92 replies  •  2024-11-04 12:27:56 +08:00
    donaldturinglee
    donaldturinglee
    Aug 21, 2024
    1
    看你用什么前端框架吧。React 一把梭就 next.js ,Vue 一把梭就 Nuxt.js
    magicflower
    magicflower
    Aug 21, 2024 via Android
    2
    nextjs 可以直接写后端接口,也可以用 nestjs 。
    reDesign
    reDesign
    Aug 21, 2024 via iPhone
    3
    我选择 nextjs ,写接口挺方便的。https://github.com/TobeBetterV/Moments
    limars
    limars
    Aug 21, 2024
    4
    是要比较复杂的那种后端框架吗? nestjs 吧。
    momo2789
    momo2789
    Aug 21, 2024
    5
    我宁愿 Koa 也不用 next ,Java 味太浓,不是 js 的最佳实践
    lucasj
    lucasj
    Aug 21, 2024
    6
    - Express.js
    - Koa.js
    - Nest.js
    - Next.js (React)
    - Nuxt (Vue)
    Jaufey
    Jaufey
    Aug 21, 2024 via iPhone
    7
    显然你看岔了 next 和 nest
    @momo2789
    Jaufey
    Jaufey
    Aug 21, 2024 via iPhone❤️3
    8
    Hono 或者 Fastify 。Hono 挺时髦的,但是第一支持对象是 Deno ,放在 Node 上运行性能肯定比不上 Fastify
    Jaufey
    Jaufey
    Aug 21, 2024 via iPhone
    9
    其次还有 hapi ,nitro 可供选择
    jiangzm
    jiangzm
    Aug 21, 2024❤️1
    10
    首先排除这两个, 什么玩意。SSR 绝大部分是伪需求
    Next (React)
    Nuxt (Vue)

    使用基础级框架就选
    Express
    Koa

    使用企业级框架就选
    Nest
    Egg
    Midway (阿里开源的没有 Egg 那么重,和 nest 类似)
    GG668v26Fd55CP5W
    GG668v26Fd55CP5W
    Aug 21, 2024 via iPhone
    11
    @momo2789 那个明明是 PHP 味…
    onichandame
    onichandame
    Aug 21, 2024
    12
    简单才是硬道理。直接从 express/koa 入手,各种业务逻辑和中间件设计得优雅一点,以后迭代得更复杂了随时可以切到 nest/midway
    momo2789
    momo2789
    Aug 21, 2024
    13
    @WhateverYouLike 谢谢,确实看错了,23333
    XCFOX
    XCFOX
    Aug 21, 2024❤️4
    14
    tRPC 简单但严谨
    https://trpc.io/
    horizon
    horizon
    Aug 21, 2024❤️1
    15
    写后端咋不足了
    nodesolar
    nodesolar
    Aug 21, 2024
    16
    nestjs 还可以 用过
    qingshui33
    qingshui33
    Aug 21, 2024
    17
    喜欢 Java Spring 的可以用 nestjs ,喜欢 PHP Laravel 的可以选择 AdonisJS
    yafoo
    yafoo
    Aug 21, 2024 via Android
    18
    @qingshui33 喜欢 thinkphp 的,可以试试我的 jj.js
    cat
    cat
    Aug 22, 2024
    19
    @WhateverYouLike 投 Fastify 一票,玩熟了特别爽
    IvanLi127
    IvanLi127
    Aug 22, 2024❤️2
    20
    2024 ? hono.js

    fastify 和 hono.js 写简单的不错
    复杂的 NestJS 。

    愿意上更可靠的类型安全,推荐捆上 trpc 。
    dartabe
    dartabe
    Aug 22, 2024
    21
    Express / routing-controllers
    289396212
    289396212
    Aug 22, 2024
    22
    请教一下,怎么让 nodejs api 里用 swagger 的时候增加一个接口自动出现在 swagger 上,而不是要自己写一个注释文件
    dj721xHiAvbL11n0
    dj721xHiAvbL11n0
    Aug 22, 2024
    23
    2024 我更推荐 astro+你喜欢的( nest+express+koa )
    ixixi
    ixixi
    Aug 22, 2024
    24
    试下 strapi 代码都不用写了
    dream4ever
    dream4ever
    Aug 22, 2024
    25
    @ixixi 哈哈,我就在用,挺省心的,适合工作前端方面比较重的。后来又看很多人说 Supabase 也不错,后面有机会了打算也试试,看看哪个更好。
    echoless
    echoless
    Aug 22, 2024
    26
    @289396212 #22 搜了一下 https://github.com/fastify/fastify-swagger

    python 的 fastapi 已经自带了
    seu
    seu
    Aug 22, 2024
    27
    fastify 够用了 性能也够
    CodeCodeStudy
    CodeCodeStudy
    Aug 22, 2024
    28
    肯定是 Midwayjs 啊,用 TypeScript 写的,入门简单,功能丰富。
    Express, Koa 太简单了,功能少。Eggjs 功能多些,但是是用 Javascript 写的。
    Charkey
    Charkey
    Aug 22, 2024
    29
    @reDesign 看着不错,文章|闲聊|关于我还能歪来歪曲跟着鼠标焦点
    guguji5
    guguji5
    Aug 22, 2024
    30
    我用 express+express-graphql 写了个 graphql 的 api ,有个接口 3 秒才返回,而且我还不知道怎么查。无语了(能打印时间戳的地方都打了,都是毫秒级别的)
    flmn
    flmn
    Aug 22, 2024
    31
    如果简单的要性能,看看 bun+hono

    trpc 不推荐
    wu67
    wu67
    Aug 22, 2024❤️2
    32
    koa 或者 express , 另外个人建议, 远离阿里 kpi 产物
    IamUNICODE
    IamUNICODE
    Aug 22, 2024
    33
    原生保守点还是 express 和 koa ,ts 就是行 nest.js 好啦
    suyuyu
    suyuyu
    Aug 22, 2024
    34
    hono
    meteor957
    meteor957
    Aug 22, 2024 via Android
    35
    koa 没毛病
    seekafter
    seekafter
    Aug 22, 2024
    36
    React 一把梭就 next.js ,Vue 一把梭就 Nuxt.js
    我就在用 nuxt 写后端.不要 ssr 关闭就行了,能增删改查就行呗
    superhot
    superhot
    Aug 22, 2024 via Android
    37
    @flmn 能否说说推荐与不推荐的理由?
    oatw
    oatw
    Aug 22, 2024
    38
    一定要 node 吗?用下来感觉 node 写后端就是个笑话。
    kuxuan
    kuxuan
    Aug 22, 2024
    39
    koa
    wetist
    wetist
    Aug 22, 2024
    40
    排除 egg ,不怎么维护了已经
    me1onsoda
    me1onsoda
    Aug 22, 2024
    41
    @oatw 比如说?
    yozoh1163
    yozoh1163
    Aug 22, 2024
    42
    headless 可以试试 directus ,另外 hasura 也很赞,个人使用 midwayjs 多一点
    hanzhu2026
    hanzhu2026
    Aug 22, 2024
    43
    nestjs 复杂 但 强大。
    strapi 简单 headless CMS 应用场景窄了点
    dfourc
    dfourc
    Aug 22, 2024
    44
    @oatw #38 怎么说?
    libook
    libook
    Aug 22, 2024
    45
    一两个 API 的话直接用 Node 的原生 API 手写也可以。

    API 多了看项目适合哪种架构。

    我一般习惯 koa ,比较灵活。
    17681880207
    17681880207
    Aug 22, 2024
    46
    我自己会首先排除 nest.js...😗
    momo2278
    momo2278
    Aug 22, 2024
    47
    koa 或 express + tsoa ,自动生成 OpenAPI 规范的配置和前端请求客户端,前后端都用 TS 的话会很舒服
    yhxx
    yhxx
    Aug 22, 2024
    48
    我前些天也在纠结这个,看了一圈之后决定还是用 egg 了。。。
    这楼里居然没有一个提到 egg 的,已经凉了吗
    yhxx
    yhxx
    Aug 22, 2024
    49
    哦看到了,还是有人提的
    RoshanWu
    RoshanWu
    Aug 22, 2024
    50
    用的自己基于 koa 封装的。
    oatw
    oatw
    Aug 22, 2024
    51
    @me1onsoda #41
    @galikeoy #44

    umm.. 就是对比下来感觉 node 框架的提供的特性不够丰富,跟玩具一样。比如 Koa vs Ruby on Rails 。TJ 和 DHH 还在 twitter 上就 orm 的设计 battle 过,也许设计哲学不一样,不过我是站 DHH 的,因为不想自己瞎 jb 折腾拼包,累。
    92van
    92van
    Aug 22, 2024
    52
    nestjs 很舒服😁
    mark2025
    mark2025
    Aug 22, 2024
    53
    @jiangzm egg 团队都已经解散没人维护了,不推荐。 推荐 midway ,TS 写得很顺滑,各种组件也很丰富,并且也不是 kpi 项目。
    mark2025
    mark2025
    Aug 22, 2024
    54
    @yhxx egg 团队早已解释,项目已经凉了。并且 egg 一直对 TS 支持很差, 尤其是写插件的时候(多 worker 也导致很不好调试)
    mark2025
    mark2025
    Aug 22, 2024
    55
    @oatw 没写过的人评价笑话才是笑话
    mark2025
    mark2025
    Aug 22, 2024
    56
    xctcc
    xctcc
    Aug 22, 2024
    57
    我的个人项目用的 eggjs ,几年下来已经屎山了,不过无所谓,随便写
    BornThisWay
    BornThisWay
    Aug 22, 2024
    58
    有 nextjs 不用的话 正儿八经的后端 nestjs 脚本级的接口 koa
    horizon
    horizon
    Aug 22, 2024
    59
    @mark2025 #51
    midway 类似 java 的写法让我很难受
    xieren58
    xieren58
    Aug 22, 2024
    60
    bun + hono...
    jiangzm
    jiangzm
    Aug 22, 2024
    61
    @horizon #59 啥叫类似 java 的写法? 认识这么局限吗,局限的都不能描述出来?
    horizon
    horizon
    Aug 22, 2024
    62
    @jiangzm #59
    「 Midway (阿里开源的没有 Egg 那么重,和 nest 类似)」
    jiangzm
    jiangzm
    Aug 22, 2024
    63
    @mark2025 #53 很久没有用 egg 了,没太关注。我看了下今年也有在发小版本,应该还是有人在维护,只是不加新功能了。
    jiangzm
    jiangzm
    Aug 22, 2024
    64
    @horizon #62 这两框架很像啊,midway 作者都说借鉴了 nest ,说类似没什么问题。
    "类似 java 的写法"确实不知道指啥。
    mtjgu
    mtjgu
    Aug 22, 2024
    65
    Nestjs 嵌入 Fastify 挺好用的
    datadump
    datadump
    PRO
    Aug 22, 2024
    66
    nestjs 撸过一个项目(边缘产品,核心的还是不敢用它),虽然没出过问题,但是用起来还是心慌慌
    foru17
    foru17
    Aug 22, 2024 via iPhone
    67
    nestjs
    chenzhe
    chenzhe
    PRO
    Aug 22, 2024
    68
    经常写 crud 的管理面板,目前习惯是 nestjs 写接口,然后 ant design pro 做面板,搭楼问一下,nestjs 使用 mikro-orm 定义的实体,生成的类型文件,怎么能方便的导入到 ant design pro 里,这样就不用两边都写类型文件了。
    orange14
    orange14
    Aug 22, 2024
    69
    hono
    jason94
    jason94
    Aug 22, 2024
    70
    看具体业务场景

    如果是相对重的后端,首选 nestjs ,在复杂业务中使用过,没有出过问题
    zbowen66
    zbowen66
    Aug 22, 2024
    71
    全栈直接 Next.js 一把梭,server actions 很好用,入参出参直接按普通函数写 TypeScript 定义就行了,完爆 TRPC 。
    其次 Nest.js 大而全,Koa 小而美
    hugepizza
    hugepizza
    Aug 23, 2024 via iPhone
    72
    Hono 和 koa 一样简单明了 开箱即用的 middleware 比 koa 多 也有很多类型相关的支持 甚至直接 rpc
    没必要搭 bun 用 node 完全没问题
    如果只是很轻量的后端 可以直接上 cf worker 部署也很简单不过 node 的一些 api 用不了
    superhot
    superhot
    Aug 23, 2024
    73
    @libook
    @meteor957
    @kuxuan
    @zbowen66
    @hugepizza

    看各位都推荐用 Koa ,我只简单写过一点点,想请教一下在实际工程中 Koa 对比 Express 的优势在哪里?特别是 Express 5 也支持异步中间件了。
    Yjhenan
    Yjhenan
    Aug 23, 2024
    74
    除了 trpc 还有 tsrpc😆
    https://tsrpc.cn/

    CHTuring
    CHTuring
    Aug 23, 2024
    75
    2024 年 Hono 就够用了,虽然 Nest 好,但是每次感觉都是捏着鼻子写。
    xintianyou
    xintianyou
    Aug 23, 2024
    76
    @289396212 #22 nest 有 swagger 的插件,在每个接口上写注解就好了
    libook
    libook
    Aug 23, 2024❤️2
    77
    @superhot #72 其实差别很小,因为作者都是同一个人,只是 koa 在早期设计实现了一个思维试验,即把原有 Express 的中间件顺序执行模式改为了“洋葱模型”,发展至今应该是两者的主要区别,看你的业务特点是使用顺序执行模型还是使用洋葱模型比较合适。

    另一方面就是 Express 自带了一些基本的中间件;而 koa 仅提供最基础的框架,需要自己选择各个中间件来组合使用。我做的项目一开始是用 Express ,后来发现随着需求越来越具体,Express 自带的中间件无法很好的满足需求,于是就自己写中间件,以至于后来几乎大部分自带中间件都没有在用了,所以后来换了 Koa 。

    其实各种框架都学一学也花不了多少时间,后端更多的是研究系统架构、数据库、中间件(消息队列、KV 、搜索引擎等)、服务治理、分布式事务等等,语言和框架就是冰山一角。
    cc77
    cc77
    Aug 23, 2024
    78
    哈?不知道 nextjs 可以自定义后端框架么, 我一般是 nextjs + koa
    zbowen66
    zbowen66
    Aug 23, 2024
    79
    @superhot #73 我写的也不多,可能过时了,做个参考:koa 给我的感觉是非常简洁,只需要记住洋葱模型,绝大多数时间都不需要查 API 。express 则没有这种舒适感
    panxiuqing
    panxiuqing
    Aug 23, 2024
    80
    @xieren58 #60 同
    Al0rid4l
    Al0rid4l
    Aug 23, 2024
    81
    别 koa express 了, 只写 API 没有前端页面就 hono 和 fastify
    mark2025
    mark2025
    Aug 23, 2024
    82
    @horizon 比如?
    Jed2020
    Jed2020
    Aug 23, 2024
    83
    我刚好也有这方面需求,前阵子技术选型我最后选了 nestjs
    JackFung
    JackFung
    Aug 23, 2024
    84
    nestjs 吧,用起来比较规范
    momo2789
    momo2789
    Aug 24, 2024
    85
    @Al0rid4l hono 都 1.0 了还内存泄漏着呢,怎么上生产
    oatw
    oatw
    Aug 26, 2024 via iPhone
    86
    @mark2025 哦?我写没写过有必要告诉你?你最好抱着 node 写到死
    xyovo999
    xyovo999
    Sep 6, 2024
    87
    hyper-express 我挺喜欢的
    https://github.com/kartikk221/hyper-express
    xyovo999
    xyovo999
    Sep 23, 2024
    88
    @jiangzm 赞同,我觉得用起来太难受了,尤其是那个 next 的中间件。
    dawen
    dawen
    Sep 24, 2024
    89
    nodejs 代码写的不多,最近写了个小项目(已上线有几千用户那种),选了最经典的 express ,感觉生态比较完善
    tabc2tgacd
    tabc2tgacd
    Oct 13, 2024
    90
    我自己个人接的一些小活用的是 express ,前端纯 html/js/less 。感觉这样可能开始开发效率低点,有足够的积累后,开发效率也不差。但都是个人能完成的小玩意,没搞过大的。
    ckvv
    ckvv
    Oct 17, 2024
    91
    gentlemanChen
    gentlemanChen
    Nov 4, 2024 via Android
    92
    @reDesign 好像 api level 一些东西难复用,比如你的 rate limit 我看到复制了好几遍, 也需要每个 api try catch ,简单是简单,但是感觉缺失很多正常的支持
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1802 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 200ms · UTC 16:58 · PVG 00:58 · LAX 08:58 · JFK 11:58
    ♥ Do have faith in what you're doing.