Node.js 20现已发布!

Node.js 20现已发布!

💡 原文英文,约1600词,阅读约需6分钟。
📝

内容提要

Node.js 20发布,新增权限模型、同步import.meta.resolve和稳定的测试运行器等功能。权限模型提升了文件系统访问的安全性。V8引擎更新至11.3,性能显著改善。Node.js 20将于10月进入长期支持,鼓励用户测试新特性并规划升级。

🔎

延伸解读

权限模型:实验性安全控制

Node.js 20 引入实验性权限模型,通过 --experimental-permission 标志限制文件系统访问、子进程和 worker_threads。开发者可使用 --allow-fs-read 和 --allow-fs-write 指定路径或通配符,实现细粒度控制。运行时可通过 process.permission.has() 检查权限。该功能仍处实验阶段,未来可能变更,适合评估但暂不建议用于生产环境。

测试运行器转正与 ESM 加载器进展

test_runner 模块在 Node.js 20 中标记为稳定,提供 describe、it 等测试编写基础构件,但报告器和代码覆盖率仍不稳定。同时,ESM 加载器通过专用线程隔离,import.meta.resolve 改为同步返回,与浏览器行为一致。这些改进为 ESM 生态的稳定化铺路,但加载器标志尚未正式稳定,需关注后续更新。

性能优化与平台扩展

Node.js 20 包含多项性能改进:EventTarget 初始化成本减半,URL、fetch() 等基础 API 得到优化,Ada URL 解析器升级至 2.0。此外,新增 ARM64 Windows 二进制包,提升平台兼容性。WASI 不再需要命令行选项启用,但 new WASI() 必须指定版本,旧代码需适配。这些变化旨在提升运行时效率与跨平台支持。

升级规划与生命周期提醒

Node.js 20 将于 2023 年 10 月进入长期支持(LTS),当前为“Current”版本。Node.js 14 将于 2023 年 4 月结束支持,Node.js 16 提前至 2023 年 9 月结束支持。建议开发者尽快测试应用与模块在 Node.js 20 下的兼容性,并规划升级至 Node.js 18(LTS)或 Node.js 20(即将 LTS),以确保项目安全与稳定。

❓

Q&A

Node.js 20的新特性有哪些?

Node.js 20新增了权限模型、同步的import.meta.resolve、稳定的测试运行器等功能。

权限模型在Node.js 20中有什么作用?

权限模型提升了文件系统访问的安全性,允许开发者更细粒度地控制文件系统访问。

Node.js 20的V8引擎更新了什么?

Node.js 20的V8引擎更新至11.3,带来了性能显著改善和新的语言特性。

如何使用Node.js 20的测试运行器?

可以使用import { test, mock } from 'node:test';来编写和运行测试,测试运行器已标记为稳定。

Node.js 20何时进入长期支持?

Node.js 20将于10月进入长期支持(LTS)。

Node.js 20对ARM64 Windows的支持情况如何?

Node.js 20现在支持ARM64 Windows平台,确保兼容性并防止回归。

🏷️

标签

➡️

继续阅读