Node 2026 发布,JS 三大新功能上线,最后一个奇偶版本

今日要闻

打破信息壁垒,走近全球前端。Hello World 大家好,我是林语冰。

Node 团队官宣 v26 现行版(Current)发布,这是 Node 第 26 个主版本,也是 Node 最后一个 奇偶发布流程的主版本,因为 Node 27 开始将采用新的发布流程。

Node 26 引入了新功能,更新了 undici 等依赖,主要包括:

  • V8 引擎更新到 14.6,引入了 ES026 的最新功能
  • 支持 JS Stage4 的 Temporal API
  • Node 27 之后每年发布一个主版本,类似 ECMAScript

Map 新方法

Node 26 将 V8 引擎更新到了 14.6.202.33 版本,该版本也是 Chromium 146 的一部分。

这个版本的 V8 引擎新增了 4 个 ES2026 MapWeakMap 的实例方法:

  • Map.prototype.getOrInsert()
  • Map.prototype.getOrInsertComputed()
  • WeakMap.prototype.getOrInsert()
  • WeakMap.prototype.getOrInsertComputed()

Map 常见的一个使用场景是先判断 key 是否存在,然后根据结果来初始化,或者直接插入新值。

举个栗子,采用 Map 数据结构来读写用户偏好的深浅主题:

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

如你所见,一行代码就简化了常见的判断逻辑,更符合人体工程学。

这个新提案引入了 MapWeakMap 的其他方法和技术细节,我们日后再专门写文章深入探讨,感兴趣的小伙伴可以关注一波。

迭代器新方法

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 个 MapWeakMap 的实例方法
  • 引入了迭代器静态方法 Iterator.concat()
  • 支持 JS Stage4 的 Temporal API,用来解决 Date 的历史包袱
  • Node 取消奇偶版本发布,Node 27 开始会像 JS 一样,每年发布一个主版本

以上就是今日《前端快讯》的全部内容了,希望对你有所帮助。

👍 感谢大家按赞跟转发分享本文,你的手动支持是我坚持创作的不竭动力喔。

😘 已经关注我的粉丝们,我们下期再见啦,掰掰~~

参考文献:

相关推荐
三*一1 小时前
Mapbox GL JS 自研面要素整形工具开发实录
开发语言·javascript·arcgis·ecmascript
nashane1 小时前
HarmonyOS 6学习:Web组件同层渲染触摸事件与长截图拼接实战
前端·学习·harmonyos·harmonyos 5
我的世界洛天依1 小时前
胡桃讲编程|续篇!用高数 + JS ES262 硬核解构:求乐正绫的值
javascript
GISer_Jing2 小时前
浏览器 Agent 插件开发规格书 (SPEC)
前端·ai·前端框架·edge浏览器
别叫我->学废了->lol在线等2 小时前
评估总结模块(暂不做)
前端
清灵xmf2 小时前
CC Switch:解决 AI 编程工具配置
前端·人工智能·cc switch
IT_陈寒2 小时前
Redis缓存击穿把我坑惨了,原来这样解决才靠谱
前端·人工智能·后端
mfxcyh3 小时前
Vue3 右键菜单实现方案(基于 vue3-context-menu)
前端
treesforest3 小时前
从IP地址归属地查询到IP地理位置精准查询指南
服务器·前端·网络