翻译:疯狂的技术宅做者:Michael Dawson & Bethany Griggshtml
https://medium.com/@nodejs/no...前端
未经容许严禁转载node
本文由Michael Dawson 和 Bethany Griggs撰写,同时 Node.js 社区委员会和 Node.js 技术指导委员会也提供了贡献。git
咱们很高兴地宣布,Node.js 14已于今天发布!此版本的重点包括改进的诊断功能、V8 的升级、实验性的异步本地存储 API、流 API 的强化、实验模块警告的删除以及一些已过期的 API 的删除。程序员
Node.js 14 取代了 Node.js 13 做为咱们当前的发行版本。根据发布时间表(https://github.com/nodejs/Rel...,Node.js 14 是将来 6 个月的 Current
版本,到 2020 年 10 月再升级为长期支持版(LTS) 。企业用户应该等到 10 月将 Node.js 升级为 LTS 时,再将其用于生产部署。但如今是用 Node.js 14 测试你的程序并尝试新功能的最佳时间。github
提醒一下 —— Node.js 12 和 Node.js 10 将分别保持长期支持,直到 2022 年 4 月和 2021 年 4 月(有关LTS策略的更多详细信息,请查看这里))。面试
马上开始!在这里了解如何下载最新版本: https://nodejs.org/en/downloa...npm
在深刻了解这一版本的新功能以前,请务必注意,添加到主版中的新功能会迅速流入当前版本。这意味着重要功能能够在次要版本中使用。咱们想借此机会重点介绍 Node.js 14 版本中的某些功能,即便它们可能已经被移植到较早的版本中了。segmentfault
诊断报告将会在 Node.js 14 中做为稳定功能发布(在 Node.js 12 中做为实验性功能添加)。这是项目正在进行的工做中的重要一步,目的是创建使用 Node.js 时可用的诊断程序并改进它们的易用性,其中大部分工做由 Node.js 诊断工做组推动。api
诊断报告功能使你能够按需或在某些事件发生时生成报告。该报告包含有助于诊断生产中的问题的信息,包括崩溃、性能下降、内存泄漏、CPU 使用率高、意外错误等。有关诊断报告功能的更多信息,请参阅 https://medium.com/the-node-j...。做为一项稳定的功能,启用诊断报告所需的命令行选项将会少一些,而且用户应该更容易在生产环境中启用诊断报告。
与往常同样,新版本的 V8 JavaScript 引擎带来了性能调整和改进,并使 Node.js 与语言和运行时方面的不断改进保持了一致。并且 V8 的版本 8(“V8 of V8”)的命名还带来了一些乐趣。
Highlights of the new JavaScript features include:
新的 JavaScript 功能的重点包括:
Intl.DisplayNames
— MDN Intl.DateTimeFormat
启用 calendar
和 numberingSystem
选项—MDN 有关 V8 中新功能的更多信息,请查看 Node.js V8 博客:https://v8.dev/blog.
该项目一直在致力于帮助管理多个版本之间的异步调用上下文的 API。实验性 Async Hooks API 在较早的版本中进行了介绍。Async Hook 的关键用例之一是异步本地存储(也称为连续本地存储)。已经有许多 npm 模块提供了可以知足这种需求的 API ,可是多年来,这些模块很难在 Node.js 内核以外进行维护;而且该项目已经达成了共识,即让 Node.js 提供 API 会更合理。 14.x 版本带来了实验性的 Async Local storage API(也已反向移植到了 13.10)https://nodejs.org/api/async_...。咱们正在寻找能够试用此 API 的社区,并向咱们提供有关抽象模型、API接口、用例覆盖范围、功能稳定性、命名、文档等方面的反馈,以便咱们能够在之后的版本中将其脱离实验性。提供反馈的最佳方法是在此处(https://github.com/nodejs/dia...)的提出打开一个问题,并使其标题名为“Experience report with AsyncLocalStorage API”。
此版本包含一些在 Node.js Streams 实现中标记为 SemVer major 的更改。这些更改旨在提升 Streams API 的一致性,以消除歧义并简化 Node.js 核心各个部分的行为。例如,http.OutgoingMessage
与 stream.Writable
和 net.Socket
的行为彻底相同于 stream.Duplex
。一个显著的变化是 autoDestroy
选项如今默认设置为 true,使流在结束后始终调用 _destroy
。尽管咱们不认为这些 SemVer 的重大更改会影响大多数程序,由于它们只会更改边缘状况,可是若是你严重依赖 Stream,最好在 Node.js 14 是当前版本时进行测试,以便为将来的发布作好准备。 Node.js 14 将会在 2020 年 10 月成为 LTS。
用 Web Assembly 编写的 Node.js 包为某些用例带来了更好的性能和跨平台支持的机会。 14.x 版本包含 Web 程序集系统接口(WASI)的实验性实现,以帮助支持这些用例。尽管对 Node.js v14 来讲并非新事物,但这是值得注意的,由于 WASI 有潜力显著简化本机模块的体验。你能够在 API 文档中了解有关它的更多信息:https://nodejs.org/api/wasi.html。
在 Node.js 13 中,咱们再也不须要包含 - experimental-modules
标志,可是在 Node.js 中运行 EcmaScript Modules 仍然会产生警告 ExperimentalWarning: The ESM module loader is experimental
。
从 Node.js 14 开始,在 Node.js 中使用 ESM 时再也不出现此警告。可是 Node.js 中的 ESM 实现仍处于试验阶段。根据咱们的稳定性指数:“该功能不受语义版本控制规则的约束。向后兼容的更改或删除可能会在未来的任何版本中发生。”在生产环境中使用该功能时,用户应保持谨慎。
请记住,Node.js 中 ESM 的实现不一样于你熟悉的开发经验。大多数转换工做流都支持 Node.js ESM 实现不支持的功能,例如可选文件扩展名或 JSON 模块。来自转译环境的模块极可能须要必定程度的重构才能在 Node.js 中工做。值得一提的是,咱们的许多设计决策都是有两个主要目标的。规范合规性和 Web 兼容性。咱们相信,当前的实现为编写 ESM 模块提供了将来的证实模型,该模块为走向通用 JavaScript 铺平了道路。请在文档中阅读更多内容。
Node.js 中的 ESM 实现仍处于试验阶段,但咱们相信,咱们已经很是接近可以在 Node.js 中把 ESM 称为“稳定”状态。消除警告是朝这个方向迈出的重要一步。
Node.js 为多种不一样的平台提供了预构建的二进制文件。对于每一个主要版本,在适当的状况下都会进行评估并提出最少的工具链。
此版本在 macOS 上不会对旧版本的 macOS Node.js 用户产生负面影响。对于Node.js 14,咱们将最低的 macOS 目标版本提升到了 macOS 10.13(High Sierra)。
在基于 Linux 的平台上,对于 Node.js 14,最低 GCC 版本仍为 GCC 6,可是咱们计划为某些使用 GCC 8 的平台构建并发布二进制文件。
Node.js 14 也不会在寿命终止的 Windows 发行版上运行。
有关更多详细信息,请参见 Node.js BUILDING.md。
在进入 “current” 阶段的 6 个月中,Node.js 14 将得到为 Node.js 贡献的最新功能。在接下来的6个月中,此发行版本很是适合尝试最新功能、测试项目与最新 Node.js 更新的兼容性,并提供反馈,所以该发行版准备在 10 月过渡到 LTS。
要下载,请访问:https://nodejs.org/en/downloa...
咱们想借此机会对全部促成此版本发布的贡献者和 Node.js 合做者表示很是感谢。咱们还要感谢 Node.js 构建工做组 确保咱们拥有建立和测试发行版的基础架构,并对 Node.js 14 的工具链进行必要的升级。
Node.js v14.0.0 的发布者是Bethany Griggs。你能够在 v14.0.0 release(https://github.com/nodejs/nod...)中查看完整的功能列表。