Node.js 24 正式发布,我升级后发现了几个让人惊喜的变化
技术笔记 13 次阅读

Node.js 24 正式发布,我升级后发现了几个让人惊喜的变化

Node.js 24 正式发布

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)

评论通过后显示

暂无评论,来写第一条吧 ✍️