Node.js 14 版于日前正式宣布正式宣布发布, 此版包涵的看点如下表所示:
对确诊机能的改良升级换代 v8 发动机追加概念性的促发器邻近地区储存 API加强流 API去除概念性组件中的警示去除一小部分晚期版中弃置的 API责任编辑起初正式宣布发布于 Medium 的 Nodejs 时评,经原作许可由 InfoQ 英文站译者并撷取
Node.js 14 替代 Node.js 13 成为了他们的现阶段(current)版。依照正式宣布发布方案,Node.js 14 将是未来 6 个月的现阶段版,然后在 2020 年 10 月升级换代为平衡版 (LTS)。 像从前一样,企业使用者应该要到 10 月份 Node.js 升级换代为 LTS 之后,再升级换代其制造自然环境中的 Node.js 版。 不过,现在是采用 Node.js 14 试验应用领域和试著新机能的好时机。
告诫一下,Node.js 12 和 Node.js 10 的平衡版将分别稳步保护到 20
点选
https://nodejs.org/en/download/current/ 浏览新版,立刻已经开始自学吧!在他们已经开始深入细致介绍新版的机能以后,须要告诫一点,那就是新版中加进的机能会迅速被加进到现阶段平衡版东齐县,这就意味著他们在不升级换代主版的情况下,也能在现阶段平衡版的小版预览中采用那些新机能。因此借这个良机他们向大家重点项目如是说下 Node.js 14 版中的一些文本,即便那些文本中可能有些部分已经在以后的版中存在了。
确诊调查报告变为平衡机能
在 Node.js 14 中确诊调查报告将是一个平衡的机能(在 Node.js 12 中是实验性的机能)。在大力推进和建立需用、功能强大的 Node.js 确诊机能的组织工作民主化中,这是非常重要的一步棋。其中绝大部分组织工作是由 Node.js 确诊小组大力推进的。
确诊调查报告机能使你在聚合调查报告的时候,既能依照须要聚合,也能通过该事件促发聚合。对确诊调查报告的重要信息分析能协助你确诊各种制造自然环境问题,包括崩盘、操控性慢、缓存外泄、CPU 采用量高、未捕捉的极度等。点选镜像能了解到更多关于确诊调查报告机能的信息。作为一个平衡的特性,启用确诊调查报告所需的命令行选项将减少一个,并且使用者在制造自然环境中能很容易启用它。
V8 升级换代到 V8 8.1
与从前一样,新版的 V8 JavaScript 发动机带来了操控性调整和改进,同时也使 Node.js 保持了在语言和运行时方面稳步改良的一致性。V8 的升级换代还给他们带来了一个好玩的命名,V8 的版 8(“ V8 的 V8”)。
新的 JavaScript 机能主要包括:
可选链—— MDNNullish 合并—— MDNIntl.DisplayNames —— MDN为 Intl.DateTimeFormat 启用 calendar 和 numberingSystem 选项—— MDN了解 V8 中新机能的更多重要信息,请查看 Node.js V8 博客: https://v8.dev/blog 。
概念性促发器邻近地区储存 API
该项目一直在致力于协助管理多个版之间促发器调用上下文的 API。概念性 Async Hooks API 已在晚期的版中引入了。Async Hook 的关键用例之一是促发器邻近地区储存(也称为连续邻近地区储存)。已经有许多 npm 组件提供了 API 来满足这种需求,但是那些年来,在 Node.js 核心之外保护那些机能一直很棘手;并且在这个项目上社区已经达成共识,认为由 Node.js 提供统一的 API 会更合理,因此 14.x 版带来了概念性的 Async Local storage API (也在 13.10 中加进了该 API)。他们正在寻求社区来试著这个 API,并向他们反馈有关抽象模型、API 接口、用例覆盖范围、机能平衡性、命名、文档等方面的重要信息,这样他们就能在以后的版中将其变为平衡机能。给他们提供反馈的最佳方法是在确诊仓库的问题区)创建一个问题,并命名为“AsyncLocalStorage API 的经验调查报告”。
流
在 Node.js 的流实现中,此版中提供了一些标记为 SemVer major(译者注:SemVer major 表示的是大版号不兼容)的更改。那些更改旨在提高 Streams API 的一致性,以消除歧义并简化 Node.js 核心各个部分的行为。例如,http.OutgoingMessage 与 stream.Writable 类似,而 net.Socket 的行为和 stream.Duplex 完全一样。一个显著的变化是 autoDestroy 选项现在默认设置为 true,使流在结束后始终调用 _destroy。尽管他们认为那些 SemVer major 更改对大多数程序不会有影响,因为它们只更改了一些边缘的场景,但如果你严重依赖 Stream,最好在 Node.js 14 还是现阶段版时进行试验,以便为未来的正式宣布发布做好准备。 Node.js 14 将会在 2020 年 10 月成为 LTS。
概念性 Web Assembly 系统接口
用 Web Assembly 编写的 Node.js 包为某些采用场景带来了更好的操控性和跨平台支持的良机。 为了支持那些场景,14.x 版中包涵了 Web Assembly 系统接口( WASI )的概念性实现。虽然 WASI 对 Node.js v14 来说并不是新事物,但值得注意的是它在简化原生组件的体验上非常有潜力。你能在 API 文档中了解有关它的更多重要信息:
https://nodejs.org/api/wasi.html。去除实验组件警示
其实在 Node.js 13 中,他们就已经去除了实验组件警示,不再须要采用 -experimental-modules 标志来处理,但是如果在 Node.js 中采用 EcmaScript Modules 机能,Node.js 13 中仍然会发出实验机能警示:ESM 组件导入属于实验性机能。
从 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 10.15(Catalina)下用 Xcode 11 编译了。由于二进制文件仍在编译中,以达到支持相应编译目标的发行要求,他们预计不会对较老版的 macOS 的 Node.js 使用者产生负面影响。针对 Node.js 14,他们将最低的 macOS 支持版提高到了 macOS 10.13(High Sierra)。
在基于 Linux 的平台上,对于 Node.js 14,最低 GCC 版仍为 GCC 6,但是他们计划为某些采用 GCC 8 的平台构建并正式宣布发布二进制文件。
针对停止保护的 Windows 系统版,Node.js 14 将不会为其正式宣布发布版。
有关更多详细重要信息,请参见 Node.js BUILDING.md 。
行动呼吁
在进入 “current” 阶段的 6 个月中,Node.js 14 将接受大量贡献到 Node.js 中的新特性,因此在接下来的 6 个月中,此发行版非常适合进行机能试著、项目试验以及升级换代 Node.js 到最新版的兼容性试验,同时,请给他们提供反馈,协助该发行版在 10 月顺利过渡到 LTS。
感谢!
他们想借此良机对所有促成此版正式宣布发布的贡献者和 Node.js 合作者表示非常感谢。我们还要感谢 Node.js 构建小组 确保他们拥有创建和试验发行版的基础架构,并对 Node.js 14 的工具链进行必要的升级换代。
你能点选这里查看 v14.0.0 版的完整机能列表。