• 请不要在回答技术问题时复制粘贴 AI 生成的内容
fxjson
V2EX  ›  程序员

有多少用 nodejs 写后端的,请举手?

  •  3
     
  •   fxjson · Dec 15, 2020 · 22777 views
    This topic created in 2148 days ago, the information mentioned may be changed or developed.

    最近玩儿弄了下 koa, 用着还是挺香的,直聘上搜了下,貌似后端的 jd 上很少有对 node 的需求,无外乎 java,php,Python,go 。

    那么问题来了,node 只是前端构建工具用的多吗?

    132 replies  •  2021-04-02 21:34:53 +08:00
    1  2  
    ❮ ❯
    ysc3839
    ysc3839
    Dec 15, 2020 via Android
    1
    估计是性能问题+出现时间短。
    Java, PHP, Python 都有 20 年以上的历史了,生态丰富。Golang 虽然出现晚但是性能比 Node.js 好。
    wnpllrzodiac
    wnpllrzodiac
    Dec 15, 2020 via Android
    2
    异步回掉,结构会垮掉。太难了
    Elethom
    Elethom
    Dec 15, 2020 via iPhone
    3
    现在有哪个写后端的没用过 node 吗?
    crclz
    crclz
    Dec 15, 2020❤️1
    4
    node 写后端不是折磨?有好的东西不用
    guiling
    guiling
    Dec 15, 2020 via Android
    5
    express,koa,egg,nest 都用过,目前都是 nestjs
    语言不重要,会啥用啥,生态都挺全的
    anjianshi
    anjianshi
    Dec 15, 2020❤️2
    6
    java: 配套完善,从业者众多,编译型语言
    PHP: 配套完善,从业者众多,短平快,虽然是脚本语言但有多年业界经验积累
    Python: 配套完善,虽然是脚本语言,但语言规范性较 PHP 和 Js 更好一点(用 Python 做后端应该也不多)
    Go: 配套一般,但同时兼具编译型语言的安全性和脚本语言较快的开发速度,且性能不错
    Node.js: 配套一般,脚本语言,且出来的晚,没有很完善的业界积累,不敢大规模用到核心业务。
    fescover
    fescover
    Dec 15, 2020❤️4
    7
    几个大项目,node_modules 都能塞满服务器
    gouflv
    gouflv
    Dec 15, 2020 via iPhone❤️1
    8
    真正的 nodejs 程序员都在阿里和字节
    6IbA2bj5ip3tK49j
    6IbA2bj5ip3tK49j
    Dec 15, 2020
    9
    现在的项目在用 nestjs+typescript
    活脱脱一个丐中丐中丐版的 Spring Boot,跟 Java 相比,看不到任何优势。
    EPr2hh6LADQWqRVH
    EPr2hh6LADQWqRVH
    Dec 15, 2020❤️1
    10
    Java 太卷,PHP 是真不行,Python 性能大问题,Golang 21 世纪 PHP,

    光 JS 自己是远远不够的,还需要 TypeScript 和多方生态外部加持。

    全流程统一语言,降本增效,老板之友。

    但对全流程一知半解的还是别轻易搞了,到时候资料都不知道咋搜
    hantsy
    hantsy
    Dec 15, 2020
    11
    我用我写 Java 的经历写了一个 nestjs 例子,https://github.com/hantsy/nestjs-sample 分支记录文档的步骤。
    ben1024
    ben1024
    Dec 15, 2020
    12
    有个项目用的 Node,出问题都硬撸,人才还是少
    KuroNekoFan
    KuroNekoFan
    Dec 15, 2020 via iPhone
    13
    @xgfan 我也很好奇 nestjs 的竞争力在哪,如果说想搞出一个翻版 spring,那为什么不直接上 spring……
    hantsy
    hantsy
    Dec 15, 2020
    14
    人生苦短,天天 Spring 多无聊啊。https://github.com/hantsy/spring-reactive-sample
    @KuroNekoFan
    6IbA2bj5ip3tK49j
    6IbA2bj5ip3tK49j
    Dec 15, 2020
    15
    @KuroNekoFan “前端大佬”会,上了 nestjs,可以增加自己影响力 /KPI 。
    kenshinhu
    kenshinhu
    Dec 15, 2020
    16
    都长期写 node 了,深感体系没有 java 健全
    hantsy
    hantsy
    Dec 15, 2020
    17
    @xgfan NestJS 对于 OOP 特别 是 Java 程序员更友好,毕竟后端的生态圈子,换了一门语法或者框架,一样可以轻松套上去用。至于前端,如果不懂 OOP,Nestjs 也写不了,前后通用的东西太少了,除了语言本身。
    IssacTomatoTan
    IssacTomatoTan
    Dec 15, 2020 via Android❤️1
    18
    node 做内部项目挺好的 贼快试错成本低 但是不建议对外输出 除非你家有足够积累
    6IbA2bj5ip3tK49j
    6IbA2bj5ip3tK49j
    Dec 15, 2020
    19
    @hantsy 你这段回复,解释了为啥 nestjs 要照着 spring 。
    但是没有解释 “ nestjs 的竞争力在哪,如果说想搞出一个翻版 spring,那为什么不直接上 spring……”

    --------------------------------
    @IssacTomatoTan
    现在写 hello world 的玩具,各个语言都没有太大差别。
    golangLover
    golangLover
    Dec 15, 2020 via Android
    20
    大家觉得配套不完善的有例子吗
    Lemeng
    Lemeng
    Dec 15, 2020
    21
    为啥用它呢
    ShadowPower
    ShadowPower
    Dec 15, 2020
    22
    node.js 的数据库驱动有好多坑,数字类型会丢精度
    只有 MySQL 的驱动能配置以字符串类型返回数字……
    hanxu317138
    hanxu317138
    Dec 15, 2020
    23
    性能不够, 机子来凑~~~
    wellhome
    wellhome
    Dec 15, 2020
    24
    听各位的意思,deno 也不值得投入精力去学了?
    KuroNekoFan
    KuroNekoFan
    Dec 15, 2020
    25
    @xgfan 我的理解是,纯前端,其实是能力是十分受限的,理想的情况是前端+一个很轻的 web 后端,这种'很轻的后端',express 应该足够胜任。
    至于比较重的后端,我也没什么发言权,就不多说了
    wellhome
    wellhome
    Dec 15, 2020
    26
    那个人小项目, 后端到底用啥呢?
    不喜欢 java 。太重, 除了 java 也没啥用了
    hantsy
    hantsy
    Dec 15, 2020
    27
    @xgfan 对于熟悉 Node 环境的人,之前有 Express 和 TypeScript 经验,现在有一个 Nestjs 框架能够提供各种服务的集成,可以像 Spring 那样简化开发流程,为什么要用不熟悉的 Spring ?
    hantsy
    hantsy
    Dec 15, 2020
    28
    @ShadowPower 你用的什么数据库驱动或者框架?

    Nestjs 中使用 Mongoose 操作 Mongo,我反而觉得 OOP 是一种束缚了,之前我写过一个项目,感觉 JS 调用 Mongoose 真的不错。
    6IbA2bj5ip3tK49j
    6IbA2bj5ip3tK49j
    Dec 15, 2020
    29
    @hantsy 那就是会 node,不会 java 的人,选 nestjs 嘛。

    那你前面说的“NestJS 对于 OOP 特别 是 Java 程序员更友好,毕竟后端的生态圈子,换了一门语法或者框架,一样可以轻松套上去用。”有屁用?
    fxjson
    fxjson
    OP
    Dec 15, 2020
    30
    没有用 koa 的?支持 async,await,再也不用写回调了
    6IbA2bj5ip3tK49j
    6IbA2bj5ip3tK49j
    Dec 15, 2020
    31
    @golangLover 我随便说两个吧
    1.如果要在 nestjs 前面加一个层(不同语言可能叫法不一样,filter/interceptor/middleware )来做签名验证。nestjs 是拿不到 raw request body 的,只能拿到自作聪明 parse 过的 body 。
    2.默认的 json parser 有精度问题。
    Cbdy
    Cbdy
    Dec 15, 2020
    32
    @gouflv 虚假的 nodejs 程序员在回复你
    Kasumi20
    Kasumi20
    Dec 15, 2020
    33
    不会吧不会吧, 不会真有人以为 JavaScript 就靠前端成为世界上用户最多的语言吧
    fatigue
    fatigue
    Dec 15, 2020
    34
    我知道的,有手机游戏服务器是用 nodejs 的,还行
    SwainWong93
    SwainWong93
    Dec 15, 2020
    35
    @gouflv 是因为场景吗? Node.js 做中台天然优势?
    GBdG6clg2Jy17ua5
    GBdG6clg2Jy17ua5
    Dec 15, 2020
    36
    @Kasumi20 #33 难道不是吗?
    maichael
    maichael
    Dec 15, 2020
    37
    后端是之前几年流行”全栈”这个概念的时候,node.js 招的比较多。

    这玩意的尴尬点在于:
    1. 不好招人,会写 JS,不代表就会后端,比起招 Java 后端、Go 后端,合格的 Node.js 后端要更难找。
    2. 性能不行,或者说在大多数场景下性能都不太行。

    中大型公司可能有些部门的有些产品会用到,但占比比较小,外包公司基本用 Java,初创型公司现在首选都是 Golang 或者 Java 。现在还有用 Node.js 基本都是前几年看 Node.js 火热选了的,船大难调头,还有一小部分是真的有自己技术积累的,不过真的很少。
    JerryCha
    JerryCha
    Dec 15, 2020❤️13
    38
    一年以后,你的硬盘被 node_modules 塞满,弄出了 Google 级的故障
    jmyz0455
    jmyz0455
    Dec 15, 2020
    39
    观望 golang
    dream4ever
    dream4ever
    Dec 15, 2020
    40
    在传统企业做“全干工程师”,能力 + 精力有限,所以目前的业务,后端用的全是 Node.js ,倒是在考虑学习 Java,毕竟生态非常全面。
    kidlj
    kidlj
    Dec 15, 2020
    41
    Node.js 性能很好的好吧!( IO 密集型限定)
    imgbed
    imgbed
    Dec 15, 2020
    42
    用 uni-app 的 uniCloud,也算是 node 吧
    vision1900
    vision1900
    Dec 15, 2020
    43
    用 Swift 写的服务端框架,将近两万颗星。Node 就更多了
    lihongming
    lihongming
    Dec 15, 2020 via iPhone❤️7
    44
    Node 是给“大前端”用的,前端不仅要负责界面,还要自己负责组装数据,自己写 API 。

    相应的,后端也会比以前更靠后,要为“大前端”写供 Node 使用的底层 API,比如搜索服务、数据库服务等。基本的 CRUD 操作已经不是后端的事了,后端写的是 CRUD 请求和数据库之间的中间层。显然这对前后端的要求都变高了,一般的企业不太容易招到这样的人才。
    mywaiting
    mywaiting
    Dec 16, 2020
    45
    认真说,心智负担低点的全栈选手,JS/NodeJS/Deno 还真是最好选择~~
    anguiao
    anguiao
    Dec 16, 2020 via Android
    46
    就算是全干,估计也没多少人选 Node,毕竟写后端的难点并不在于多学一门语言。
    BruceLi
    BruceLi
    Dec 16, 2020
    47
    我们产品想招一个 node 后端太难了,开发物联网云端服务,面试了很多,都是擅长前端,后端基础不行,坐标西安,年底想换工作的私聊。
    dayeye2006199
    dayeye2006199
    Dec 16, 2020
    48
    @wellhome python 的 django flask 糙快猛不香么
    sslyxhz
    sslyxhz
    Dec 16, 2020
    49
    部分后端小项目用到...大工程还是 Java
    henryhu
    henryhu
    Dec 16, 2020
    50
    nodejs 不香吗?
    kevinwan
    kevinwan
    Dec 16, 2020 via iPhone❤️1
    51
    我们在疫情初期,一个同事用 nodejs 写了个服务,上去第一天就挂了,服务再也没起来过,请求量太大,然后 k8s 伸缩都来不及,超级吃内存
    立马改成 go 重写了,再也没出过问题,然后我在公司内禁止了使用 nodejs,别喷,可能我们在 nodejs 上能力不够,但我只是描述了下事实
    同时我们在 go 上有深入的积累,自研了框架 https://github.com/tal-tech/go-zero
    zjsxwc
    zjsxwc
    Dec 16, 2020 via Android
    52
    node 只适合中台,
    光 node 原生不支持 int64 大整数,
    这条就只能放弃 node 了。
    ragnaroks
    ragnaroks
    Dec 16, 2020
    53
    有个二维码服务用了 node.js ,请求频率也就一天几十万次,1t2g 有点吃力,后面改成 dotnet core 没管过了
    dfourc
    dfourc
    Dec 16, 2020
    54
    @ShadowPower #22 如果是浮点运算丢失精度这个怪不得 js 。。。
    light000
    light000
    Dec 16, 2020 via Android❤️1
    55
    用 node-red 做,有没有一样的大佬
    baleeny
    baleeny
    Dec 16, 2020
    56
    感觉中小型后端 node.js 很香啊
    unclemcz
    unclemcz
    Dec 16, 2020❤️1
    57
    js 的性能还可以的,我学习 node 入门的时候建了一个小站,使用 expressjs,到现在已经平稳运行 4 年多,日均 pv15k,uv3k,服务器性能 1u1g,cpu 长期处于低位。
    优点:性能不弱鸡,开发效率与 php 比不遑多让。
    缺点:弱类型,需要约束自己的编码习惯,ts 更优。
    wangyzj
    wangyzj
    Dec 16, 2020
    58
    当前端程序员想玩大前端的时候
    zengming00
    zengming00
    Dec 16, 2020
    59
    感觉你们觉得 node 不行的都还在使用连 promise 都还没有的时代的 node 技术,node 写后端确实比其它古老技术的少,因此导致网上没什么教程,即使有,那也是古老得不行的教程
    pushback
    pushback
    Dec 16, 2020
    60
    只要你问,那就挺多(狗头)
    ericgui
    ericgui
    Dec 16, 2020 via Android
    61
    nodejs 挺好,你的 PV 在 100 万以内的时候,不用考虑那么多
    zqjnew
    zqjnew
    Dec 16, 2020 via Android
    62
    单编程来说, 除了会 node 这种动态语言,还要会静态语言,即函数式编程思想 和 oop 编程思想都要有
    huabinglan
    huabinglan
    Dec 16, 2020 via Android
    63
    和编译型比性能,把 nodejs 用到 CPU 密集型场景,忽略 npm 生态,好吧,我认输
    mritd
    mritd
    Dec 16, 2020 via iPhone
    64
    我觉得 node 这东西就不该存在,我也不知道为啥😂
    dartabe
    dartabe
    Dec 16, 2020
    65
    Typescript + Express 感觉挺适合前端拓展一下的 反正我肯定加入自己技术栈
    90928yao
    90928yao
    Dec 16, 2020
    66
    @kevinwan 我直接一个好家伙 这也能推广下
    moonrailgun
    moonrailgun
    PRO
    Dec 16, 2020
    67
    我的后端项目: https://github.com/TRPGEngine/Server

    Node 给我的感觉就是内存消耗有点大,其他感觉还行。但是如果是一个性能要求比较高的应用的话,还是不要选择 Node, Java 才是你最好的选择
    chaleaoch
    chaleaoch
    Dec 16, 2020
    68
    @avastms Golang 21 世纪 PHP 是什么意思?
    CFM880
    CFM880
    Dec 16, 2020
    69
    我司 Node 转 Java 中,Node 后端,貌似不好招人
    supuwoerc
    supuwoerc
    Dec 16, 2020
    70
    我一个前端,帮运维写过 Node 脚本来刷数据...
    alan0liang
    alan0liang
    Dec 16, 2020 via Android
    71
    Node 性能并不是很差: https://www.techempower.com/benchmarks/ Koa rank #244, Spring rank #284 ; https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/javascript.html,当然跟 C 的性能还是没法比。主要是内存占用有点大,可能需要手动调一些 v8 参数。
    dany813
    dany813
    Dec 16, 2020
    72
    为啥要限定一种语言呢,前端想玩后端,node 是首选,想再深入后端,可以再用 java go
    xingyuc
    xingyuc
    Dec 16, 2020
    73
    @gouflv 腾讯小程序编辑器也是 node 写的吧
    Jinnn
    Jinnn
    Dec 16, 2020
    74
    前端在学 nest, 作为前端学习后端的过渡, 对于后端没经验前端来说, nestjs 太适合学习了
    rodrick
    rodrick
    Dec 16, 2020❤️1
    75
    对于专业后端,java go 肯定比 node 优先级高,对于专业前端,项目需要倒腾后端,选 node 上手成本低,优先级肯定也高,抛开场合谈这些没啥用
    kamilic
    kamilic
    Dec 16, 2020
    76
    起码 Typescript 要上 要不然就吃屎了 亲身经历 T T
    Vegetable
    Vegetable
    Dec 16, 2020
    77
    因为写后端的没人只会 node,而选型的时候 node 完全没有优势,说实话我宁可选 php...

    个人并不信任自己写出来的 js 代码,ts 又有点麻烦。应该是是 node 在后端届的确没有足够的声望。
    Inozo
    Inozo
    Dec 16, 2020
    78
    从 php 切到 nestjs,node+ts 无论是开发速度还是质量都很美丽
    hyyou2010
    hyyou2010
    Dec 16, 2020
    79
    浏览过国外小创业公司的技术栈,react+nodejs 算是一个常见组合
    zy445566
    zy445566
    Dec 16, 2020❤️8
    80
    我就是专职 Node.js 后端,上面一看就知道 95%是都没做过专职 Node.js 后端。

    实话就是:Node.js 超级好用,做后端超级爽,这几年 JS 一年一个样,越用越爽。生态也很好,基本要什么功能都有 npm 包,node.js 这几年提升也超级大,不可同日而语了。还有就是有一个错误的观点说用其它语言写的组件,我觉得用其它语言的组件也没啥,java 也用 c++写的 mysql 啊,现在组件都支持通讯了,还跟语言挂啥钩。

    还有你如果要问真正的 node.js 开发,最好在技术版块 node.js 模块发帖。程序员这个板块太大了,基本都是没开发过 node.js ,都是听别人说什么就是什么的。
    Phariel
    Phariel
    Dec 16, 2020 via iPhone
    81
    TypeScript 才是业界希望🐶
    component
    component
    Dec 16, 2020❤️1
    82
    部门自建 serverless,几乎所有人都会用到 nodejs 写接口
    shunia
    shunia
    Dec 16, 2020
    83
    @alan0liang #71 你看差了吧,koa 好像是 300 多名,你发的这个是数据库组件的排名
    starkwang
    starkwang
    Dec 16, 2020❤️4
    84
    坐标鹅厂,每天日调用接近 10 亿的服务就是拿 Node 写的,顶峰 qps 几万是毫无压力的。

    为啥要 Node 而不是其它语言?因为这是“接入层”,和前端逻辑密切相关的,一套逻辑分成前端后台两个人写,效率极低;会写 go 、java 的专业前端工程师太难招。

    当然,这种做法并不适合小公司,国内前端很多,但优秀的能抗住业务的 Node.js 工程师很少,这些人都集中在大厂,不少人在前端圈子都是大佬级别。
    biguokang
    biguokang
    Dec 16, 2020❤️1
    85
    这个要看你是用 node 写什么了。。。

    如果是写和数据库进行 curd 的那种常规 web 后端,其实和其他传统后端语言相比真的没什么优势。

    如果是写高并发、I/O 密集型的服务中间件什么的,node 还是很香的。


    而且由于 node 得益于 Google 的 JavaScript 引擎 Just In Time 的特性,所以 node 在冷启动方面速度是最快的,所以现在的 serverless,最适合的开发语言就是 node.js ,现在很多云平台的 serverless 服务的开发语言是优先 node
    leekafai
    leekafai
    Dec 16, 2020
    86
    所以有些人一开口就是不行不好,回复之前至少说说自己写了几年 node 后端吧
    五年 node 开发,node 真的过了好多个坎才走到今天这么好用,4-> 6,6 -> 8,8 -> 12,12 -> 14,给我的感觉就是要写的代码越来越少,心智负担是在下降的,我觉得很好。
    网关、业务、脚本、爬虫,用 node 这么久没发现有是需要撇开 node 才能解决的问题。
    但是历史包袱的原因,例如上面有人说到的精度问题,bigint 超限的要转 string 比较安全,这种确实很蛋疼。
    还有就是 npm 里面包多质量不稳定,但是能想到的领域基本上都有可靠方案,精度计算,各种 driver,各种 sdk,这方面没有什么业务开发的问题。
    我现在唯一想写、有写的,只有 js ts go,其他的都太罗里吧嗦。
    durban126
    durban126
    Dec 16, 2020
    87
    最近在看 nestjs 感觉不错,可以试试
    koajs express 都是比较轻量的
    KouShuiYu
    KouShuiYu
    Dec 16, 2020
    88
    在小公司做广告管理系统,服务目前跑了几个月的一直 ok,感觉小公司涉及前端项目的用 node 做后端还是很适合的,js 一把嗦
    scr
    scr
    Dec 16, 2020
    89
    创业全干工程师, 后端用的 nestjs

    业务基本是简单的 curd,跑测试单节点 qps 在 4 千左右;

    但如果到 4 百 qps, 就能有足够的利润招专业的后端来重新写后端了;

    选 nestjs 也有这部分考虑, 可以直接转 springboot
    hantsy
    hantsy
    Dec 16, 2020
    90
    @leekafai 最大的问题就是 NPM 包的兼容性,G,F 家大公司还好。一些小的第三方,Broken 的事经常遇到,lock 文件锁定还是不错的。
    AGEGG
    AGEGG
    Dec 16, 2020
    91
    用 node 时最烦的还是包管理,出现过依赖包的依赖包有问题结果安装不上的情况
    catinsides
    catinsides
    Dec 16, 2020
    92
    举手! MEAN stack 全干.
    看上面的回复感觉不少人还是对 node 有偏见和误解,不要听风就是雨。
    TJT
    TJT
    Dec 16, 2020
    93
    我司用 Node 支持了每日近亿 PV, 加上 TypeScript 说实话目前都还挺够用的.
    lonelymarried
    lonelymarried
    Dec 16, 2020
    94
    自己的项目我就用 node 写,主要是速度快。发现国外很多开源的很多用 node 写啊。反而 java 很少。
    libotony
    libotony
    Dec 16, 2020
    95
    业余 node 开发者(三年前 node 用的比较多,后来转 go 了 ),前段时间做了个项目,用 typescript + typeorm + express 无脑数据库代理,这种相对不复杂的场景用 node 的话开发效率高,性能瓶颈肯定不在 node 。

    优点:
    IO 密集型场景下,性能优秀
    开发效率快
    npm 包数量比较大
    资源占用少(以我的认知)

    缺点:
    成也 JS 败也 JS 且与前端共用生态。在细化的后端领域,JS 好学不代表可以上来直接用 node 做后端更不代表前端可以革后端的命,狭隘的讲前后端的知识体系有差异的,合格的 node 程序员少找。前后端通吃一定是牛逼的,我更愿意偏向于前后端都能干好的为“全干“工程师
    缺少”企业级开发框架“的领军者,或者说”企业级开发框架“暂未推广开来

    用不用 node 还是看场景吧
    xionger
    xionger
    Dec 16, 2020
    96
    我用 方便好用 性能也不错
    mingsz
    mingsz
    Dec 16, 2020
    97
    举个手,挺好用的,容易上手,灵活,开发快,轮子也多
    dantegg
    dantegg
    Dec 16, 2020❤️2
    98
    @JerryCha 至少在 rm -rf / 时可以抵挡一下
    SuperManNoPain
    SuperManNoPain
    Dec 16, 2020
    99
    @dantegg 艹 , node_modules 优点+1
    wanguorui123
    wanguorui123
    Dec 16, 2020
    100
    NodeJS 写过大型后端系统
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4011 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 214ms · UTC 10:09 · PVG 18:09 · LAX 02:09 · JFK 05:09
    ♥ Do have faith in what you're doing.