内容提要
Node.js 20引入了实验性权限模型,允许开发者限制程序对特定资源的访问。此版本更新了V8引擎至11.3,增强了JavaScript API,并将test_runner模块标记为稳定。URL解析器Ada 2.0提升了性能,支持ARM64 Windows。新WASI()调用要求指定版本,url.parse()对非数字端口的URL发出警告。
延伸解读
权限模型:实验性安全控制
Node.js 20 引入实验性权限模型,通过 --experimental-permission 标志启用,可限制文件系统操作、子进程生成和工作线程创建等资源访问。这有助于防止应用访问敏感数据或运行有害代码,但该功能仍处于实验阶段,未来可能变更。开发者需注意,启用后会限制所有可用权限,需根据应用需求谨慎配置。
测试运行器稳定:生产就绪
test_runner 模块在 Node.js 20 中标记为稳定,此前为实验性。这意味着开发者现在可以在生产环境中依赖该模块进行测试,无需担心 API 变动。这一变化由 Colin Ihrig 贡献,提升了 Node.js 内置测试工具的可靠性,减少了对外部测试框架的依赖。
URL 解析器升级:性能与兼容性
Node.js 20 集成 Ada 2.0 URL 解析器,显著提升 url.domainToASCII 和 url.domainToUnicode 等函数的性能,并消除 URL 主机名解析对 ICU 的依赖。同时,url.parse() 对非数字端口的 URL 发出警告,未来版本将抛出错误,开发者应迁移到 WHATWG URL API 以避免主机名欺骗风险。
平台支持与 API 变更
Node.js 20 新增 ARM64 Windows 二进制包,提供原生执行支持,并升级为 tier 2 支持级别。此外,new WASI() 调用现在必须指定 version 选项,无默认值,依赖默认版本的代码需更新。Web Crypto API 参数现按 WebIDL 定义进行强制转换和验证,提升了与其他实现的互操作性。
Q&A
Node.js 20引入了什么新特性?
Node.js 20引入了实验性权限模型,允许开发者限制程序对特定资源的访问。
如何启用Node.js的权限模型?
权限模型通过--experimental-permission标志启用,限制对所有可用权限的访问。
Node.js 20中V8引擎更新到了哪个版本?
V8引擎更新至11.3版本。
test_runner模块在Node.js 20中有什么变化?
test_runner模块已标记为稳定,准备好用于生产环境。
Node.js 20对URL解析器做了哪些改进?
URL解析器Ada 2.0提升了性能,支持ARM64 Windows,并增强了url.domainToASCII和url.domainToUnicode函数。
Node.js 20中url.parse()对非数字端口的URL有什么新警告?
url.parse()对非数字端口的URL发出警告,这些URL在未来版本中将会抛出错误。