今日要闻
打破信息壁垒,走近全球前端。Hello World 大家好,我是林语冰。
Node 团队官宣 v26 现行版(Current)发布,这是 Node 第 26 个主版本,也是 Node 最后一个 奇偶发布流程的主版本,因为 Node 27 开始将采用新的发布流程。
Node 26 引入了新功能,更新了 undici 等依赖,主要包括:
- V8 引擎更新到
14.6,引入了 ES026 的最新功能 - 支持 JS Stage4 的
TemporalAPI - Node 27 之后每年发布一个主版本,类似 ECMAScript
Map 新方法
Node 26 将 V8 引擎更新到了 14.6.202.33 版本,该版本也是 Chromium 146 的一部分。
这个版本的 V8 引擎新增了 4 个 ES2026 Map 和 WeakMap 的实例方法:
Map.prototype.getOrInsert()Map.prototype.getOrInsertComputed()WeakMap.prototype.getOrInsert()WeakMap.prototype.getOrInsertComputed()
Map 常见的一个使用场景是先判断 key 是否存在,然后根据结果来初始化,或者直接插入新值。
举个栗子,采用 Map 数据结构来读写用户偏好的深浅主题:

这种模板代码在 GitHub 仓库源码中比比皆是,因此 ES2026 直接把它封装为一个"方法糖":

如你所见,一行代码就简化了常见的判断逻辑,更符合人体工程学。
这个新提案引入了 Map 和 WeakMap 的其他方法和技术细节,我们日后再专门写文章深入探讨,感兴趣的小伙伴可以关注一波。
迭代器新方法
Node 26 更新的 V8 引擎除了引入了 Map 的新方法,还新增了迭代器的静态方法 Iterator.concat()。
以前,为了有序连接两个迭代器,可以采用委托迭代器语法 yield*:

这需要手动排序,然后通过 yield* 在生成器函数中连接迭代器。
我们还可以采用其他方案,比如先把迭代器转化为数组,再利用 [].concat() 方法来拼接,但也是"曲线救国"。
如果你比较熟悉 Array 的实例方法 [].concat(),那么 Iterator.concat() 也大同小异,只是把拼接算法移植到迭代器数据结构上了:

Iterator.concat() 也是一个"方法糖",不需要多余的生成器函数来辅助,更符合人体工程学。
Temporal API
Node 26 还集成了 Temporal API,一个 JS 现代化日期 API,用来解决 Date 的历史包袱。
简而言之,Temporal API 能方便处理日期相关的逻辑:

和 Date 不同,Temporal API 计算三月时会返回 3,而不是像数组索引一样返回 2,更符合自然科学的直觉。
另外一个冷知识,Temporal 提案好像不是通过 V8 引擎自然引入到 Node 中,为什么呢?
Temporal 的源码不是和 V8 引擎一样底层采用 C++ 实现,而是使用 Rust 语言实现了一个 temporal_rs 库,这个库和 JS 引擎无关,或者说和 JS 引擎 "正交"(一个数学与计算机术语)。
换而言之,Temporal 提案过于复杂,所以独立抽离出来实现,其他 JS 引擎只需要直接集成即可使用,这也方便标准化和维护,打破了以往"浏览器大战"的隔阂。
所以 Node 26 可以选择等待 V8 引擎更新,也可以提前自己集成 Temporal,而不借助 V8 引擎来实现。
发布流程重做
以前,Node 一直采用奇偶版本发布,奇数版本最终会废弃,偶数版本最终会变成 LTS(长期支持版)。
由于 Node 每年会发布 2 个版本,本文标题的"Node 2026"的说法并不精确,因为我们无法确定:
- 奇数版 vs 偶数版???
- Current(现行版)vs LTS(长期支持版)???
显然,奇偶版本有点复杂,所以 Node 将采用新的发布流程,Node 26 是 最后一个 奇偶版本发布。
从 Node 27 开始,Node 每年发布一个新版本,该版本在每年 4 月成为当年的 Node 主版本,然后同年 10 月成为 LTS,维护时长两年半(30 个月),直到 EOL(生命周期结束)。
这样,用户可以每年更新一次同步 LTS 版本,或者每两年半更新一次,确保采用尚未废弃的最低版本。
举个栗子,今年而言,Node 20 就是一个 EOL 废弃版本,不再维护。
建议大家至少更新到 Node 22,其中一个破坏性更新就是 ES2025 导入特性提案的语法变化:

总之,明年开始,Node 就跟 ECMAScript 一样,版本和年份刚好对齐,Node 2027 即 Node 27。
重点总结
最后一个 奇偶版本 Node 26 正式发布,主要包括:
- 新增了 4 个
Map和WeakMap的实例方法 - 引入了迭代器静态方法
Iterator.concat() - 支持 JS Stage4 的
TemporalAPI,用来解决Date的历史包袱 - Node 取消奇偶版本发布,Node 27 开始会像 JS 一样,每年发布一个主版本
以上就是今日《前端快讯》的全部内容了,希望对你有所帮助。
👍 感谢大家按赞跟转发分享本文,你的手动支持是我坚持创作的不竭动力喔。
😘 已经关注我的粉丝们,我们下期再见啦,掰掰~~

参考文献:
- 🔗 Node 26 :nodejs.org/en/blog/rel...
- 🔗 Node 20 升级指南 :nodejs.org/en/blog/mig...
- 🔗 Node 发布机制 :nodejs.org/en/blog/ann...