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

现在流行的 Node.js 做后台比传统的 Java .Net 有哪些优势?

  •  
  •   libasten · 14 天前 · 2888 次点击
    是因为此前大前端概念慢慢“入侵”到后端的吗?
    还是它的内核简便,起手很快?
    理论上 node 的 runtime 比 java dotnet 都轻量很多?有点早年 php 的感觉?
    我看各种配套工具我看更新飞快,各种云服务厂商也是五花八门,每次看这类工具都感觉自己脱离时代了。
    但是我这两天试着玩玩,感觉要深入用,也挺折腾的,和前端 JavaScript 一样,各种类库的“依赖黑洞”挺吓人的,有时候要用一个新的工具库,提示 node 版本不支持,升级了 node 版本,结果以前正常跑的一个组件里面某个写法又用了旧版本的 node ,又得去更新另外一个组件库,想起那个著名的“黑洞”了。
    有一说一,有时是要搞个简便的功能,确实很便捷。
    33 条回复    2025-08-23 09:21:59 +08:00
    kuxuan
        1
    kuxuan  
       14 天前
    我觉得,对于前端的优势,就是一个人,都能干出个小项目
    zhangxh1023
        2
    zhangxh1023  
       14 天前
    感觉是 单体仓库下代码复用比较方便
    minami
        3
    minami  
       14 天前
    优势:前端程序员也可以做后端了
    劣势:前端程序员也可以做后端了
    pigeon2099
        4
    pigeon2099  
       14 天前
    最大的缺点: 同样的代码 三个月后全新 clone 下来 npm install
    然后有概率 run 不起来了
    orangie
        5
    orangie  
       14 天前
    不开玩笑地说,冷启动速度快这是相比 java spring 是优势,虽然 spring 也有 lazy 模式更快,但实际上几乎没人用。
    maichael
        6
    maichael  
       14 天前
    优点就是快,其它都是次要的,对于那些后端业务很轻的应用,AI 的加持下,几天就能搞完。
    duanxianze
        7
    duanxianze  
       14 天前
    优势就是前端可以做,是的,就是这样的,而且一般 web 应用的瓶颈都在 IO ,所以性能并不差
    dfkjgklfdjg
        8
    dfkjgklfdjg  
       14 天前
    优势是快速启动、快速落地。就和以前 PHP 时代一个人干一个项目一样。
    大部分场景需求都是各种项目落地页和企业官网。但其实他们本身就没有什么性能要求,快就完事了。
    youtubbbbb
        9
    youtubbbbb  
       13 天前
    和 Java/.Net 比的话就是很适配云函数这一套。现在北美几乎所有的创业公司都是用 node 写业务层了。
    FantaMole
        10
    FantaMole  
       13 天前
    Node.js 现在很流行吗,是回暖了?我以前用 Node.js 是 18 年的时候。那个时候就感觉社区活跃度在降低,各种 Node.js 不行的论调。
    LiuJiang
        11
    LiuJiang  
       13 天前
    优势快 + 国外配套生态齐全,Vercel 、CF 、Supbase ,Serverless 立马就能部署上线使用,也不需要操心机器运维、数据库、Redis 等。适合初创公司,一人全栈。百万级并发,高可用都能解决。

    国外初创公司,基本都是 ts + python 全栈技术栈,国内也在慢慢起步。
    alwaysol
        12
    alwaysol  
       13 天前
    @pigeon2099 确实,只能把当时运行正常的 node_modules 文件夹保存好,我们公司一个上古项目任何新包都不能装,一装各种报错
    kzfile
        13
    kzfile  
       13 天前
    一个人干的话真的写起来方便,当然主要是语言的功劳
    sdrpsps
        14
    sdrpsps  
       13 天前
    简单、搭配 AI 出活快,就算 AI 不认识某个库,查看对应的类型声明文件也能跑
    Ayanokouji
        15
    Ayanokouji  
       13 天前
    不喜欢 Node.js 做后端的原因,包管理和 runtime 管理太烂了,接手的项目启动太麻烦。
    thetbw
        16
    thetbw  
       13 天前
    npm install 跑不起来的建议锁死版本,不用^和~这种
    @alwaysol
    Lockroach
        17
    Lockroach  
       13 天前
    语法简单、冷启动快,而且前端人多容易推广
    BugCry
        18
    BugCry  
       13 天前
    1 、开发体验顺,前后端开发不用切换语言
    2 、心智负担小,JSON 与 object 几乎可以无缝转换,很少面对 marshal/unmashal 的问题
    3 、部署成本低,可以轻松部署到赛博大善人,起步测试不花钱
    dssxzuxc
        19
    dssxzuxc  
       13 天前
    nodejs 毕竟蛋疼的是破坏性变更、不向后/向前兼容
    本地开发建议用 nvm 切换各个 node 版本
    对于一些不兼容所有包管理器的项目,可以用 corepack 解决 (例如你的 pnpm 是 10.x ,项目 A 只能在 pnpm 8.x 下跑,可以不改动本地包管理版本去解决)。不过 corepack 是个实验性功能,并不稳定,未来还可能从 nodejs 移除变成单独的项目。
    线上部署用 docker 。
    Gilfoyle26
        20
    Gilfoyle26  
       13 天前
    @LiuJiang #11 不可能,国内是永远也不会出现 Vercel ,Supbase ,CF 的,因为内容审核这一关永远过不了。
    wangtian2020
        21
    wangtian2020  
       13 天前
    锁定老版本的 npm 包我是不用的,我写 nodejs 文件名后缀都恨不得命名为 .mjs
    还在用什么 node-sass / 什么不支持新版本的 node-gyp 野鸡包 的人,要躲远点
    我写 nodejs 怎么没那么多版本问题
    wangtian2020
        22
    wangtian2020  
       13 天前
    @dssxzuxc 这我就不得不提了,python^3.12 删除了 distutils 导致 nodejs 的包 abandonware/noble 构建失败
    到底是哪些语言天天在破坏性变更啊,跟 nodejs 有关系吗
    LiuJiang
        23
    LiuJiang  
       13 天前
    @Gilfoyle26 不影响阿,国内也可以用。
    LiuJiang
        24
    LiuJiang  
       13 天前
    @dssxzuxc 切换 node 版本,可以试试 Volta
    hongchends1
        25
    hongchends1  
       13 天前
    快快快
    xiaxiaokang
        26
    xiaxiaokang  
       13 天前
    Java .Net Golang 等在我眼里都属于 Base Service ,他们只需要做好领域,具体业务还是用 nodejs 实现比较合理!
    flytsuki
        27
    flytsuki  
       13 天前
    我是写.net 的,但是用 nodejs 写过部分接口,因为需求会有变化用 nodejs 写的可以让实施去调整不用再编译
    liuliancc
        28
    liuliancc  
       13 天前
    经典好用,快速开发,我开发独立项目就用 Vue3 + Express.js 或者 Next.js
    XCFOX
        29
    XCFOX  
       13 天前
    TypeScript 非常适合写业务。

    Kysely, Drizzle 能无痛写出又灵活又类型安全的 SQL:
    ```ts
    const persons = await db.selectFrom('person').select(['id', 'age']).execute()
    // persons: {id: number; age: number | null}[]
    ```
    据我所知仅此 TypeScript 一家了。
    humbass
        30
    humbass  
       13 天前
    主要是快速开发,部署调试环境比较简单。我当年( 17 年) 从 php->js ,就是因为无法忍受 php 的部署和调试
    哪怕是 macos 上部署 php 开发环境都比较麻烦。换成 node ,安装一个 nvm ,爽的不行。
    dssxzuxc
        31
    dssxzuxc  
       12 天前
    @wangtian2020 #22 这就得问 noble 为什么不采用预编译或者 rs-napi 或者 wasm 而使用 node-gyp 去现场编译了,当然大部分项目是因为历史包袱甩不掉,还能更新就已经很不错了。node-gyp 依赖 python 运行时环境,本机上找到什么版本就用什么,毕竟重新下载一个指定的 python 版本去构建太蛋疼了,真要这样说不定有些项目 npm install 吭哧吭哧下好几个不同版本 python 下来,而 python 运行时对基础环境有要求,node-gyp 对 python 版本有要求,Node.js -> node-gyp -> Python -> C++ 编译器 -> 核心系统库 -> 目标产物,这是一个十分不稳定且脆弱的流程,无论发生什么都可以算预期行为。
    真要说起来这也是 nodejs 的锅,因为原生模块性能比 js 好,那注重性能的都会去写原生,但是 c++产物无法跨平台运行,你在 A 平台写好了,别的平台也想用但没有精力去适配,就有了 gyp ,就有了封装专注 nodejs 的 node-gyp ,就有了 node-sass 等包带来的一地鸡毛。
    zhennann
        32
    zhennann  
       12 天前
    @XCFOX Vona ORM 是新出的框架,知道的人不多。不仅支持链式类型推断,也支持选项式类型推断,更支持 DTO 动态推断与生成
    jojopro
        33
    jojopro  
       12 天前
    nodejs 后端开发 约等于 全干工程师 优势:公司省钱 个人:比较费人
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3185 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 11:25 · PVG 19:25 · LAX 04:25 · JFK 07:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.