
Node.js 24 正式发布,我升级后发现了几个让人惊喜的变化
上周 Node.js 24 正式发布了,作为每天都在跟 Node 打交道的人,我第一时间就升级体验了一把。说实话,本来没抱太大期待——毕竟 Node.js 近几年的更新都偏保守,稳定大于一切嘛。但这次用下来,有几个变化是真的让我眼前一亮。
先是 V8 引擎版本更新带来的性能提升
Node.js 24 内置了 V8 的最新版,跑了个简单的基准测试,同样的 Express 应用,请求处理速度大概快了 15%-20%。对于高并发场景来说,这个提升相当可观。我那个每天要处理几十万请求的 API 网关,升级之后 CPU 占用直接从 70% 降到了 55% 左右。
其实 V8 团队这几年一直在做底层优化,尤其是 JIT 编译器和内存管理这块,每次大版本更新都能薅到一点性能羊毛。这次 Node 24 吃的红利算是比较明显的一次。
WebSocket 的默认支持终于来了
以前要在 Node 里用 WebSocket,要么装 ws 库,要么上 Socket.IO,包管理里又多一个依赖。Node 24 直接把 WebSocket 客户端塞进了内置的 fetch API 里,这意味着你可以这样写:
说实话这个改动看着不大,但对于写实时应用的人来说太方便了。少一个依赖就少一个潜在的安全风险,也少一个版本冲突的坑。我个人的项目已经把 ws 库换掉了,运行起来稳得很。
对 TypeScript 的支持又进了一步
Node 24 继续推进了对 TypeScript 的原生支持,虽然还不能直接跑 .ts 文件(这个估计要等到 25 或者 26),但这次增加了一些实验性的类型检查 flag,可以在运行之前帮你捕获类型错误。
我比较关心的其实是另外一件事——Node 团队终于开始认真对待 TypeScript 生态了。之前几年一直有种「爱用不用」的态度,现在的姿态明显积极了很多。对像我这样从 JavaScript 慢慢迁移到 TypeScript 的开发者来说,这是个好消息。
单进程下 I/O 并发的改进
Node.js 的事件循环模型一直是它的核心竞争力,但也是它最大的瓶颈。这次 Node 24 引入了一种新的 Worker 调度策略,可以让 I/O 密集型任务在单进程下跑得更高效。
拿我这边的一个文件处理服务来测试,同样的硬件配置,之前处理 500 个文件需要大概 8 秒,升级后只要 5 秒多一点。虽然不算是质变,但对于已经用到极限的服务来说,多出来的这点性能空间可能刚好就是省下一台服务器的钱。
升级过程没有翻车,但有些坑还是要提一下
我升级的流程很简单:用 nvm 装新版本,把项目里的 engine 字段改一下,然后跑测试。大部分包都兼容,但有几个老项目遇到了问题——主要是那些用了原生模块(native addon)的,需要重新编译。
如果你也在用一些比较冷门的 C++ 扩展库,建议先在测试环境试一下。还有就是一些老旧的项目用了已废弃的 API,Node 24 把它们正式移除了,升级前可以用 node --pending-deprecation 跑一遍看看有哪些警告。
总的来说
Node.js 24 不是那种「革命性」的版本,但它是一个稳扎稳打的好版本。性能有提升、开发体验有优化、对 TypeScript 更友好了。如果是新项目,直接上 24 没有问题。老项目的话,按部就班测试一遍再升级,基本不会有太大的坑。
我自己的几个线上服务已经全部切到 24 了,跑了这周暂时没出什么问题。你们升级了吗?遇到啥问题了欢迎评论区聊聊。
评论 (0)
暂无评论,来写第一条吧 ✍️