当前位置: 首页 > 后端技术 > Node.js

Node.jsv14官方发布说明在此

时间:2023-04-03 12:18:38 Node.js

译文:Crazytechnerd作者:MichaelDawson&BethanyGriggshttps://medium.com/@nodejs/no...未经许可严禁转载本文作者MichaelDawson和Bethany由Griggs撰写,Node.js社区委员会和Node.js技术指导委员会做出了贡献。我们很高兴地宣布,Node.js14今天已经发布!此版本的亮点包括改进诊断、升级到V8、实验性异步本地存储API、强化流式API、删除实验性模块警告以及删除一些已弃用的API。Node.js14取代了Node.js13作为我们的当前版本。根据发布时间表(https://github.com/nodejs/Rel...,Node.js14将是未来6个月的当前版本,并将升级到长期支持版本(LTS)2020年10月。企业用户您应该等到10月份Node.js升级到LTS,然后再将其用于生产部署。但现在是测试您的程序并尝试使用Node.js14的新功能的最佳时机。提醒-Node.js。js12和Node.js10将分别在2022年4月和2021年4月之前保持长期支持(有关LTS策略的更多详细信息,请参见此处))。现在就开始!在此处了解如何下载最新版本:https://nodejs.org/en/downloa...在深入了解此版本的新功能之前,请务必注意,添加到主版本的新功能会快速流入当前版本.这意味着重要的功能在次要版本中可用。我们想借此机会重点介绍Node.js14版本中的一些功能,尽管它们可能已移植到更早的版本中。诊断报告变得稳定诊断报告将作为Node.js14中的稳定功能发布(在Node.js12中作为实验性功能添加)。这是该项目正在进行的工作中的重要一步,旨在建立和改进使用Node.js时可用诊断的易用性,其中大部分工作由Node.js诊断工作组推进。诊断报告功能允许您根据需要或在特定事件发生时生成报告。该报告包含有助于诊断生产中问题的信息,包括崩溃、性能低下、内存泄漏、CPU使用率高、意外错误等。有关诊断报告功能的更多信息,请参阅https://medium.com/the-node-j…。作为一项稳定的功能,将需要更少的命令行选项来启用诊断报告,并且用户应该更容易在生产环境中启用诊断报告。V8升级到V88.1像往常一样,新版本的V8JavaScript引擎带来了性能调整和改进,并使Node.js与语言和运行时的持续改进保持一致。而V8版本8(“V8ofV8”)命名法带来了一些乐趣。新JavaScript功能的亮点包括:可选链接—MDNNullish合并—MDNIntl.DisplayNames—MDN为Intl.DateTimeFormat启用日历和编号系统选项—MDN有关V8新功能的更多信息,请查看Node.jsV8博客:https//v8.dev/博客。ExperimentalAsynchronousLocalStorageAPI该项目一直致力于开发一个API来帮助管理跨多个版本的异步调用的上下文。早期版本中引入了实验性AsyncHooksAPI。AsyncHooks的关键用例之一是异步本地存储(也称为连续本地存储)。已经有许多npm模块提供了满足这种需求的API,但多年来,这些模块很难在Node.js核心之外进行维护;项目已经达成共识,Node.js会更容易。合理的。14.x版本带来了实验性的异步本地存储API(也向后移植到13.10)https://nodejs.org/api/async_…。我们正在寻找可以试用此API的社区,并向我们提供有关抽象模型、API接口、用例覆盖率、功能稳定性、命名、文档等方面的反馈,以便我们可以在未来的版本中将其从实验中移除。提供反馈的最佳方式是在此处(https://github.com/nodejs/dia...)提出一个问题,并将其命名为“使用AsyncLocalStorageAPI的体验报告”。Streams此版本包含一些在Node.jsStreams实现中标记为SemVermajor的更改。这些更改旨在提高StreamsAPI的一致性,以消除歧义并简化Node.js核心各个部分的行为。例如,http.OutgoingMessage的行为与stream.Writable完全相同,而net.Socket的行为与stream.Duplex完全相同。一个值得注意的变化是autoDestroy选项现在默认设置为true,使得_destroy总是在流结束时被调用。虽然我们预计这些SemVer重大更改不会影响大多数程序,因为它们只会改变边缘情况,但如果你严重依赖Stream,最好在Node.js14是当前版本时进行测试,以便你可以为将来的版本做好准备。Node.js14将于2020年10月成为LTS。实验性WebAssembly系统接口以WebAssembly编写的Node.js包为某些用例带来了更好的性能和跨平台支持的机会。14.x版本包括WebAssembly系统接口(WASI)的实验性实现,以帮助支持这些用例。虽然对Node.jsv14来说并不新鲜,但它值得注意,因为WASI有可能显着简化本机模块体验。您可以在API文档中了解更多信息:https://nodejs.org/api/wasi.html。删除实验模块警告在Node.js13中,我们不再需要包含-experimental-modules标志,但在Node.js中运行EcmaScript模块仍然会产生警告ExperimentalWarning:ESM模块加载器是实验性的。从Node.js14开始,在Node.js中使用ESM时不再出现此警告。但Node.js中的ESM实现仍处于试验阶段。根据我们的稳定性指数:“此功能不受语义版本控制规则的约束。向后兼容的更改或删除可能会在任何未来版本中发生。”用户在生产环境中使用此功能时应谨慎行事。请记住,ESM在Node.js中的实现与您熟悉的开发体验不同。大多数转换工作流支持Node.jsESM实现不支持的功能,例如可选的文件扩展名或JSON模块。来自编译环境的模块可能需要一定程度的重构才能在Node.js中工作。值得一提的是,我们的许多设计决策都是在考虑两个主要目标的情况下做出的。规范合规性和Web兼容性。我们相信当前的实现为编写ESM模块提供了一个面向未来的模型,为通用JavaScript铺平了道路。请在文档中阅读更多内容。Node.js中的ESM实现仍处于试验阶段,但我们相信我们已经非常接近能够在Node.js中称ESM为“稳定”。删除警告是朝着这个方向迈出的重要一步。新的编译器和平台最低要求Node.js为多个不同的平台提供了预构建的二进制文件。对于每个主要版本,在适当的情况下,都会评估和建议一个最小的工具链。此版本不会对macOS上旧版本macOSNode.js的用户产生负面影响。对于Node.js14,我们将最低macOS目标版本提高到macOS10.13(HighSierra)。在基于Linux的平台上,Node.js14的最低GCC版本仍然是GCC6,但我们计划为一些使用GCC8的平台构建和发布二进制文件。Node.js14也不会在生命周期结束的Windows上运行分布。有关详细信息,请参阅Node.jsBUILDING.md。号召性用语进入“当前”阶段六个月后,Node.js14将获得贡献给Node.js的最新功能。在接下来的6个月中,此版本非常适合试用最新功能、测试您的项目与最新Node.js更新的兼容性以及提供反馈,因此该版本已准备好在10月过渡到LTS。要下载,请访问:https://nodejs.org/en/downloa...谢谢!我们想借此机会向所有使此版本成为可能的贡献者和Node.js合作者表示衷心的感谢。我们还要感谢Node.js构建工作组确保我们拥有创建和测试版本以及对Node.js14工具链进行必要升级的基础设施。Node.jsv14.0.0的发布者是BethanyGriggs。您可以在v14.0.0版本(https://github.com/nodejs/nod...)中查看完整的功能列表。