2026年5月5日,Node.js团队正式发布了Node.js 26.0.0版本。这次更新最大的亮点是Temporal API默认启用,同时V8引擎升级到14.6版本,Undici升级到8.0。对于长期受够了JavaScript日期处理问题的开发者来说,这是一个里程碑式的更新。
最重要的变化:Temporal API
为什么需要Temporal?
JavaScript的Date对象一直是开发者的噩梦。它是可变的、时区处理混乱、API设计反人类。多年来,开发者不得不依赖moment.js、date-fns、dayjs等第三方库来处理日期和时间。
Temporal API是TC39委员会制定的全新日期时间标准,旨在彻底替代Date对象。它在Node.js 26中默认启用,无需任何flag即可使用。
Temporal的核心优势
- 不可变性:所有Temporal对象都是不可变的,避免了Date对象的可变性bug
- 时区支持:原生支持时区和夏令时处理,不再需要手动计算偏移量
- 精确到纳秒:支持比毫秒更高精度的时间表示
- 丰富的类型:提供多种专用类型,如PlainDate、PlainTime、ZonedDateTime、Duration等
快速上手示例
// 获取当前日期时间
const now = Temporal.Now.zonedDateTimeISO();
console.log(now.toString());
// 2026-05-20T10:30:00+08:00[Asia/Shanghai]
// 创建特定日期
const birthday = Temporal.PlainDate.from('1990-06-15');
// 日期计算
const futureDate = now.add({ months: 3, days: 7 });
const diff = now.since(birthday);
console.log(diff.toString()); // P13032D (天数)
// 时区转换
const tokyoTime = now.withTimeZone('Asia/Tokyo');
console.log(tokyoTime.toString());
其他重要更新
V8引擎升级到14.6
V8 14.6带来了JavaScript引擎的性能优化和新特性支持,包括:
- 更快的正则表达式引擎
- 改进的垃圾回收策略
- 更好的WebAssembly支持
Undici升级到8.0
Undici是Node.js内置的HTTP客户端库。8.0版本带来了连接池管理的改进和更好的HTTP/2支持。如果你在项目中直接使用了fetch()或undici,这次升级可能会带来性能提升。
重要的废弃和移除
Node.js 26也包含了一些重要的废弃(deprecation)和移除(removal),开发者需要注意:
- 部分旧版crypto API被标记为废弃
- 一些内部模块的使用方式发生变化
- 遵循Node.js的LTS策略,26将在10月进入长期支持
是否应该立即升级?
Node.js 26目前是”Current”版本,将在6个月内成为LTS(长期支持)版本。建议:
- 个人项目和实验环境:可以立即升级,体验Temporal API
- 生产环境:建议等待26.x的LTS版本(预计2026年10月),届时稳定性会更好
- 库和框架维护者:应该尽早测试兼容性,确保你的包在Node.js 26下正常工作
Temporal API会替代moment.js吗?
短期来看,不会。moment.js和dayjs有庞大的用户基础和丰富的生态系统。但长期来看,Temporal API作为语言标准,将会逐渐成为首选方案。对于新项目,建议直接使用Temporal API;对于老项目,可以在下次重构时考虑迁移。
需要注意的是,Temporal API目前只在Node.js 26+中默认可用。如果你的项目需要支持旧版本Node.js或浏览器环境,暂时还需要polyfill或第三方库。
升级指南
使用nvm升级:
# 安装Node.js 26
nvm install 26
# 切换到Node.js 26
nvm use 26
# 验证版本
node -v # v26.x.x
# 测试Temporal API
node -e "console.log(Temporal.Now.zonedDateTimeISO().toString())"
使用fnm升级:
fnm install 26
fnm use 26
node -v
















暂无评论内容