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

做个调研,兄弟们,你们公司后端框架目前用的是哪个? Express、Koa、NestJS?

  •  1
     
  •   inSpring · 2024-04-08 17:00:12 +08:00 · 19852 次点击
    这是一个创建于 383 天前的主题,其中的信息可能已经有所发展或是发生改变。
    131 条回复    2024-09-08 10:26:21 +08:00
    1  2  
    YellowDog7
        1
    YellowDog7  
       2024-04-08 17:03:33 +08:00   ❤️ 6
    nestjs
    EJW
        2
    EJW  
       2024-04-08 17:03:56 +08:00   ❤️ 1
    Express
    zTonyski
        3
    zTonyski  
       2024-04-08 17:06:24 +08:00   ❤️ 2
    honojs astro
    o562dsRcFqYl375i
        4
    o562dsRcFqYl375i  
       2024-04-08 17:07:04 +08:00
    Express
    ygweric
        5
    ygweric  
       2024-04-08 17:07:28 +08:00
    nest
    yKXSkKoR8I1RcxaS
        6
    yKXSkKoR8I1RcxaS  
       2024-04-08 17:08:09 +08:00   ❤️ 3
    后端用 NodeJS ?咋想的?
    colorcat
        7
    colorcat  
       2024-04-08 17:13:43 +08:00   ❤️ 6
    @Seria nodejs 咋了,大量公司都在用 nodejs ,生态活跃,组件众多。
    estk
        8
    estk  
       2024-04-08 17:18:23 +08:00 via iPhone
    Koa 不是 Express 的升级版吗?同一个作者
    Oats
        9
    Oats  
       2024-04-08 17:18:32 +08:00   ❤️ 1
    eggjs
    isbase
        10
    isbase  
       2024-04-08 17:21:36 +08:00   ❤️ 1
    业务系统一般是 springboot
    liumao
        11
    liumao  
       2024-04-08 17:23:09 +08:00
    spring boot 现在已经不流行了吗
    pigf
        12
    pigf  
       2024-04-08 17:23:48 +08:00
    问就是 springboot
    yul24
        13
    yul24  
       2024-04-08 17:24:44 +08:00
    @colorcat 我看招人 nodejs 没几个岗位的
    NessajCN
        14
    NessajCN  
       2024-04-08 17:24:54 +08:00
    nestjs 一股 java 味儿,用这个还不如上 java spring 咧
    jixiaopeng
        15
    jixiaopeng  
       2024-04-08 17:27:32 +08:00
    都用,现在用 nextjs
    mightybruce
        16
    mightybruce  
       2024-04-08 17:28:00 +08:00
    node.js 不适合做复杂的后端逻辑, 做个各个接口聚合层还是比较多的,在大厂的定位就是前端和 API 聚合。
    如果是初创公司 用 Node.js 一把梭 前后端一起写的也很多。

    全栈还是看看 nestjs 、nustjs 和 nextjs
    epiloguess
        17
    epiloguess  
       2024-04-08 17:47:10 +08:00 via Android   ❤️ 3
    express 挺好的,就是万年不更新,也不是自带 battery ,nest 其实用的人不多,只有 express 的 1/10 ,选技术也要考虑一下以后招人难不难
    https://npmstats.com/tags/node.js%20framework
    dlmy
        18
    dlmy  
       2024-04-08 17:52:15 +08:00
    Java 已死?你好歹也提一嘴啊!

    后端语言:Java
    后端框架:Spring 全家桶
    jarontai
        19
    jarontai  
       2024-04-08 17:57:23 +08:00 via iPhone
    koa + ts + 自研脚手架,nestjs 应该挺好,但感觉还是太重了,最终选择对 koa 进行简单封装定制
    qiaobeier
        20
    qiaobeier  
       2024-04-08 17:59:26 +08:00   ❤️ 3
    wordpress
    Al0rid4l
        21
    Al0rid4l  
       2024-04-08 17:59:58 +08:00
    轻量的就 fastify, hono, elysia(Bun)三选一, 重的就 Nestjs, Nextjs, Nuxtjs
    ck65
        22
    ck65  
       2024-04-08 18:04:06 +08:00 via iPhone
    Nest.js
    leehome
        23
    leehome  
       2024-04-08 18:08:01 +08:00
    nest.js
    june4
        24
    june4  
       2024-04-08 18:27:37 +08:00
    koa + ts
    简单,够用,无负担
    gml
        25
    gml  
       2024-04-08 18:31:15 +08:00   ❤️ 1
    laravel
    lxzxl
        26
    lxzxl  
       2024-04-08 18:40:20 +08:00   ❤️ 14
    @isbase @pigf @dlmy 人家发在 Node.js 节点下,你们凑什么热闹?
    maymay5
        27
    maymay5  
       2024-04-08 18:42:12 +08:00
    dotnet mvc
    lujiaxing
        28
    lujiaxing  
       2024-04-08 18:43:22 +08:00
    asp.net core
    yagamil
        29
    yagamil  
       2024-04-08 18:59:58 +08:00   ❤️ 2
    express.
    国外公司。
    说实话,国内以 java 为傲,实际到了国外,你会发现,用 node.js 的要比 java 多几倍。
    meteor957
        30
    meteor957  
       2024-04-08 19:08:00 +08:00
    koa
    zuosiruan
        31
    zuosiruan  
       2024-04-08 19:09:40 +08:00
    真有这么多的 node 啊,我工作到现在就没见过两个 node 的
    RRRoger
        32
    RRRoger  
       2024-04-08 19:11:34 +08:00
    express + typeorm
    shuimugan
        33
    shuimugan  
       2024-04-08 19:33:44 +08:00   ❤️ 7
    用了好多年的 Nest.js 了,大概从 6.x 用到现在的 10.x ,也没什么大变更。
    选 Nest.js 看中的是 TypeScript 优先,然后集成了 class-validator 可以开箱即用。
    其它自己集成的什么 http client 、数据库、缓存、消息队列、不喜欢就自己糊一个。
    至于它的依赖注入,除了控制器和模块这一层,service 层你都可以不用依赖注入,完全走静态函数,反正 js 这种脚本语言可以在运行时修改 class 的 method ,mock 起来非常简单。
    最大规模试过在 30 个 4c8g 的 contabo vps 上用 k3s 部署爬虫,套个 rancher 面板,部署一年多,稳如狗,用 DaemonSet 跑网络 IO 相关的操作,全流式操作,内存占用两百多兆,每个节点每月 32T 流量吃到饱。分析计算用 Deployment ,完全的 IO 和计算分离。
    至于 web api ,现在用 Nest.js + Supabase ,日常内存占用也就 90MB 左右,需要事务那就换 Prisma ,内存占用高一些,150MB 左右。
    结合 pkg 可以把项目打包成单个二进制文件塞到容器里,一般就 70MB 左右,冷启动贼快,丢到 1c1g 的容器里都算是打很富裕的仗了。

    至于现在,我在把 Nest.js 的程序结合 AI 迁移到.Net 上…… 现在迁移了一个应用,确实很香。
    Arguments
        34
    Arguments  
       2024-04-08 19:40:05 +08:00 via iPhone
    Adonis 存在感这么弱吗😅
    BBCCBB
        35
    BBCCBB  
       2024-04-08 19:42:29 +08:00
    spring
    shuimugan
        36
    shuimugan  
       2024-04-08 19:48:53 +08:00
    @Arguments AdonisJS 前面的大版本不支持 TypeScript ,而且是抄的 Laravel 的设计。然而 Laravel 抄的是 Ruby on Rails ,结果没抄到精髓,AdonisJS 这波操作属于把别人消化到一半的东西吃了过来……只能说 AdonisJS 适合 Laravel 用户去使用了。
    BeiChuanAlex
        37
    BeiChuanAlex  
       2024-04-08 19:51:38 +08:00
    几万用户就了不起了,用 node 合适。
    Arguments
        38
    Arguments  
       2024-04-08 19:54:56 +08:00 via iPhone
    @shuimugan 哇,居然有知道 adonis 的,感觉很小众。我是从 v5 版本开始了解的,看中大而全,什么都有,环境也都配好了,简单配置就能出活。适合快速开发。实在受不了 express 和 koa 到处找库,质量还良莠不齐🥹
    Selenium39
        39
    Selenium39  
       2024-04-08 20:04:18 +08:00 via iPhone
    之前公司 koa 现在公司 nestjs
    awalkingman
        40
    awalkingman  
       2024-04-08 20:22:12 +08:00
    @gml 最好的语言是吧
    momo24672
        41
    momo24672  
       2024-04-08 20:23:18 +08:00
    用 Koa 吧
    @yagamil 人在国外,用 java 的还是比 nodejs 多几倍
    junsongyoung
        42
    junsongyoung  
       2024-04-08 20:35:36 +08:00
    nestjs \ midwayJS \ nuxtjs
    IvanLi127
        43
    IvanLi127  
       2024-04-08 21:17:28 +08:00
    @Seria 除了国内开发者数量比不过别的平台,还有啥理由是不能选 node.js 的?
    fuyun
        44
    fuyun  
       2024-04-08 21:22:20 +08:00
    @epiloguess 拿 nestjs 和 express 比?咋不拿 express 和 nodejs 比?
    Loserzhu
        45
    Loserzhu  
       2024-04-08 21:35:25 +08:00
    公司项目 express koa2 nestjs(fastify), jvm 系的 groovy(grails) java kotlin scala 都有在用🐶
    sketcherly
        46
    sketcherly  
       2024-04-08 23:37:40 +08:00 via Android
    看见 springboot 我就舒服了
    loveshuyuan
        47
    loveshuyuan  
       2024-04-09 00:59:09 +08:00   ❤️ 1
    fastify
    ghjh
        48
    ghjh  
       2024-04-09 02:17:37 +08:00 via Android   ❤️ 1
    历史原因,现在是 .Net Core 和 SpringBoot
    wusheng0
        49
    wusheng0  
       2024-04-09 02:54:09 +08:00 via Android
    nest
    nomagick
        50
    nomagick  
       2024-04-09 07:06:18 +08:00 via Android
    自己写的,依赖自动管理,dto ,自动 openapi 文档和自动实例化,自动参数验证
    289396212
        51
    289396212  
       2024-04-09 08:01:26 +08:00
    dj721xHiAvbL11n0
        52
    dj721xHiAvbL11n0  
       2024-04-09 08:37:29 +08:00
    就我一个,想用啥用啥
    qloog
        53
    qloog  
       2024-04-09 08:42:40 +08:00   ❤️ 1
    后端:Go ,
    后端框架: https://github.com/go-eagle/eagle

    如果使用 node 相关的框架,就是 Next.js 了
    MrDarnell
        54
    MrDarnell  
       2024-04-09 08:48:13 +08:00
    我喜欢强大的、重的 ,毫不犹豫 Nest.js ,其他几个太轻了,稍微复杂点的事情都得各种集成
    singularity9866
        55
    singularity9866  
       2024-04-09 08:48:49 +08:00
    @liumao Spring Boot 不流行 现在流行什么哦
    zhangxh1023
        56
    zhangxh1023  
       2024-04-09 08:53:10 +08:00   ❤️ 1
    midway.js
    项目小,纯好玩儿
    Dylaan
        57
    Dylaan  
       2024-04-09 09:02:29 +08:00
    Express 、Laravel
    archergu
        58
    archergu  
       2024-04-09 09:08:15 +08:00   ❤️ 1
    nest.js ,这货真的好用,我甚至写 electron 时都要带一个 nest.js 在主进程。

    搞了一些小模板:
    vue+nestjs: https://github.com/ArcherGu/fast-vite-nestjs-electron
    vue+个人依赖注入小框架: https://github.com/ArcherGu/fast-vite-electron
    react+nestjs: https://github.com/ArcherGu/vite-react-nestjs-electron

    还有一套自己搞的 monorepo 模板:
    https://github.com/Doubleshotjs/template-react-nest
    https://github.com/Doubleshotjs/template-vue-nest
    wdold
        59
    wdold  
       2024-04-09 09:13:35 +08:00
    是我井底之蛙了,一直以为 java 是后端的主流
    xiuming142857
        60
    xiuming142857  
       2024-04-09 09:17:26 +08:00
    后端:go 主要用 go-zero 、gin 前端 vue.js
    wizzer
        61
    wizzer  
       2024-04-09 09:19:15 +08:00
    lstz
        62
    lstz  
       2024-04-09 09:32:00 +08:00 via Android   ❤️ 1
    next.js

    这个框架拿来写 ssr 超级酷,除了后台 job 写起来怪怪的,其他都很不错,最酷的还是用 server action 这种 seamless 的前后端方案

    关于内存占用,我相信 nextjs 也是专门做过优化了,我写了一大坨代码和库,也只占用了 30mb ,这对于 Java 来说已经超级可爱了

    我写了个开源项目,可供参考一下 https://github.com/work7z/LafTools
    反正我是很推荐 nextjs 的
    blur1119
        63
    blur1119  
       2024-04-09 09:46:34 +08:00
    @lstz 兄弟说话咋有点外国翻译腔的味道
    CodeCodeStudy
        64
    CodeCodeStudy  
       2024-04-09 09:51:26 +08:00
    用 midwayjs
    express, koa 都太简单了,之前试过 egg ,还行,但是不是 typescript 的。
    后面试了下 midwayjs ,是 typescript 的,功能挺齐全的,也很容易入手。
    wunonglin
        65
    wunonglin  
       2024-04-09 09:54:22 +08:00
    @NessajCN #14

    不会 java 啊问题是
    Zenon
        66
    Zenon  
       2024-04-09 09:57:22 +08:00
    Django
    NessajCN
        67
    NessajCN  
       2024-04-09 09:57:34 +08:00
    @wunonglin 那就更不该用 nestjs 了。不是身心全部 java 形状的谁受得了 nestjs 那股 oop 啰嗦劲儿
    zhwithsweet
        68
    zhwithsweet  
       2024-04-09 10:01:01 +08:00
    fastify
    fenglirookie
        69
    fenglirookie  
       2024-04-09 10:03:38 +08:00
    @lstz 你们的 nextjs 是怎么做前后端数据同步的呢?比如我在 APP 中打开一个网页,这个 webview 在 header UA 中注入了一个数据 country=AU ,我在后端接收到这个 country=AU 之后怎么在 client 的前端页面也取到这个 country=AU ?
    o562dsRcFqYl375i
        70
    o562dsRcFqYl375i  
       2024-04-09 10:03:45 +08:00
    @blur1119 HHHH 我就说好像哪里怪怪的
    fenglirookie
        71
    fenglirookie  
       2024-04-09 10:04:52 +08:00
    @archergu 有没有尝试过将 nextjs 塞到 nestjs 中?
    wunonglin
        72
    wunonglin  
       2024-04-09 10:08:51 +08:00
    @NessajCN #67 但是并没有第二个全家桶框架可以选问题是,要是有选择,肯定不会是 nestjs
    lstz
        73
    lstz  
       2024-04-09 10:13:40 +08:00 via Android
    @blur1119 抱歉....外企呆多了,我的语文水平急剧退化,已经在改正了
    lstz
        74
    lstz  
       2024-04-09 10:19:09 +08:00 via Android
    @fenglirookie

    对这种情况,我记得,nextjs 首先可以通过 middleware 拿到 header 值,然后保存到 nextjs 的一个 context 里。在 server component 就能从 context 里读值出来,并且传给 client component 的 props 里
    lstz
        75
    lstz  
       2024-04-09 10:25:21 +08:00 via Android
    对于那些看不起 nodejs 作为后端语言的朋友,我尊重并且理解他们以往的偏见...

    然后,在 typescript 和 node 最近几个大版本的更新来看,绝大多数 99%的程序员都很少在 nodejs 遇到瓶颈,在近乎 99%的场景 nodejs 都可堪当大任


    现在写 nodejs ,很少能遇到性能问题了
    Torpedo
        76
    Torpedo  
       2024-04-09 10:30:54 +08:00
    @epiloguess #17 这种下载量不准的。express 、react 、vue 这些都大量被用到文档、静态生成器、devserver 里
    Binwalker
        77
    Binwalker  
       2024-04-09 10:32:20 +08:00
    我会说日本还有大量在用 ruby on rails 的么
    dawenxi11
        78
    dawenxi11  
       2024-04-09 10:35:24 +08:00
    nestjs 搭配 typeorm 感觉挺香的,不用写 sql 了,实体定义好了自动生成表,增删改查非常方便。用这个给两个客户写的后台都上线了。
    SHF
        79
    SHF  
       2024-04-09 10:35:36 +08:00
    koa 最好
    glogo
        80
    glogo  
       2024-04-09 10:38:02 +08:00
    ASP.NET Core or ABP
    fenglirookie
        81
    fenglirookie  
       2024-04-09 10:47:26 +08:00
    @lstz 我想问的就是 怎么传给 client component
    raptor
        82
    raptor  
       2024-04-09 10:49:16 +08:00
    一个都没听说过,敝司 springboot
    lstz
        83
    lstz  
       2024-04-09 10:56:53 +08:00 via Android
    @fenglirookie 我理解你在 client component 外面一层应该有 layout 或者 server component...

    所以你在 server component 把值读出来,直接传 React props 就可以了呀....

    header 如何读取,这个容易的
    hui9000
        84
    hui9000  
       2024-04-09 11:01:14 +08:00
    nestjs ,nextjs ,nustjs 他们对比传统 Springboot 这种有啥优势啊?
    forvvvv123
        85
    forvvvv123  
       2024-04-09 11:08:37 +08:00
    koa
    streamrx
        86
    streamrx  
       2024-04-09 11:18:56 +08:00 via iPhone
    都用 nextjs 了为什么不用 springboot , 写东西的速度没啥区别
    chenxiansheng
        87
    chenxiansheng  
       2024-04-09 11:24:19 +08:00
    Avalonia ,我肯定是唯一一个。。。。
    yichengxian
        88
    yichengxian  
       2024-04-09 11:24:38 +08:00
    @mightybruce 就你不适合,你得业务到底多复杂,写的多恶心
    libook
        89
    libook  
       2024-04-09 11:31:09 +08:00
    主要是 koa ,部分 egg ,后来都换 go 了
    libook
        90
    libook  
       2024-04-09 11:39:13 +08:00
    其实最一开始是 express ,用的 mean 架构。后来发现业务逐渐复杂之后,对中间件的功能有更多定制性需求,于是就换了 koa ,自己搭配符合业务需求的中间件,没有合适的中间件就自己写。

    微服务架构下每个服务可以尽可能简单,专门做一件事,所以不需要复杂的框架提供复杂的特性。服务治理部分可以交给 k8s 。

    JS 是个灵活性非常高的语言,对开发者要求挺高的,因为开发者需要在众多可行的实现方案中选择最适合当前需求的。

    TS 我本人不感冒,JS+JSDoc/ESDoc+Linter+IDE 其实也能实现差不多的效果。
    nickfox5880
        91
    nickfox5880  
       2024-04-09 11:44:06 +08:00
    @Seria 你好歹先问问使用场景再输出吧。格杀勿论?
    nexo
        92
    nexo  
       2024-04-09 11:50:34 +08:00
    flask ..............
    tangqiu0205
        93
    tangqiu0205  
       2024-04-09 11:53:06 +08:00
    语言是 go 框架是 kratos
    jesse10
        94
    jesse10  
       2024-04-09 12:04:47 +08:00
    koa
    ragnaroks
        95
    ragnaroks  
       2024-04-09 12:12:51 +08:00
    疫情前我会说 aspnet core 或者 springboot ,现在(即使考虑到性能)我只会说 nextjs 或 fastify 或 fiber
    morebuff
        96
    morebuff  
       2024-04-09 13:06:56 +08:00
    gin
    seu
        97
    seu  
       2024-04-09 13:26:34 +08:00
    用 fastify 和 nestjs + prisma 编写过基于 chrome 的 CDP 协议的爬虫
    blur1119
        98
    blur1119  
       2024-04-09 13:42:00 +08:00
    @lstz 请教一下 去外企需要英文和技术并重吗
    encro
        99
    encro  
       2024-04-09 13:43:10 +08:00
    觉得这个怎么样?

    https://elysiajs.com/
    fenglirookie
        100
    fenglirookie  
       2024-04-09 13:52:25 +08:00
    @lstz 我去试试
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2625 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:54 · PVG 17:54 · LAX 02:54 · JFK 05:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.