Node.js v20 发布概述
Node.js 团队最近发布了 Node v20 版本(当前版本)。该版本将在今年 10 月进入长期支持(LTS)阶段后,正式适用于生产环境。Node v20 的主要特性包括实验性的权限模型,以提升安全性,以及将 Node 应用程序构建为独立可执行文件的功能。
主要特性
实验性权限模型
Node v20 引入了实验性的权限模型,开发者可以通过 --experimental-permission 标志启用该功能。启用后,所有可用权限将被限制。目前可配置的权限包括:
- 文件系统访问(如
--allow-fs-read、--allow-fs-write标志) - 创建子进程(
--allow-child-process标志) - 创建工作线程(
--allow-worker标志)
例如,使用 --allow-fs-write=* --allow-fs-read=/tmp/ 将允许对 /tmp/ 文件夹的 FileSystemRead 访问,并允许所有 FileSystemWrite 操作。
权限是进程范围的,开发者无法仅针对特定模块拒绝权限。默认情况下,启用了 --experimental-permission 的进程将无法创建子进程。如果启用了 --allow-child-process 标志,用户需负责传递正确的参数以创建具有适当权限的子进程。
独立可执行应用
Node v20 支持将 Node 应用程序构建为独立可执行文件(单文件应用),适用于未安装或无法安装 Node.js 的用户。该功能支持 Windows、MacOS 和 Linux 平台(除 Alpine 外的所有 Node.js 支持发行版,以及除 s390x 和 ppc64 外的所有架构)。微软正在试验单文件应用,以减少向量攻击。
测试运行器
Node v19 中引入的测试运行器在 v20 中已稳定,标志着其已具备生产环境使用的成熟度。
V8 引擎更新
Node v20 中的 V8 JavaScript/WebAssembly 引擎更新至 11.3 版本,提供了新的 JavaScript API,包括通过复制改变 Array 和 TypedArray 的方法,以及可调整大小的 ArrayBuffer 和可扩展的 SharedArrayBuffer。此外,Node v20 还支持 V8 11.2 中引入的 WebAssembly 尾调用功能。
其他改进
import.meta.resolve() 的调用现在变为同步。
开源与贡献
Node.js 是开源的,采用 MIT 许可证,由 Open JS Foundation 维护。团队鼓励开发者通过 Node.js 贡献指南 和 行为准则 提供反馈和贡献。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。