Node.js 15 正式发布:加入新工具类,附带 npm 7,支持 QUIC 协议

程序员成长指北

共 3642字,需浏览 8分钟

 · 2020-10-25

作者 | Node.js官方博客
译者 | 王强
策划 | 李俊辰
Node.js v15.0.0 现已正式发布。

我们很高兴地宣布,Node.js 15 已于今天发布。Node.js 15 将替代 Node.js 14 成为我们的“当前”发行版,后者将在本月晚些时候升级为 LTS(长期支持)。你可以期望大约每两周看到一个 Node.js 15 的新版本,随时跟上最新的功能和更改。作为奇数发行版,Node.js 15 将不会升级为 LTS。在生产部署中使用 Node.js 15 时请记住这一点——我们通常建议在生产部署中使用 LTS 版本。

要下载 Node.js v15.0.0,请访问:

https://nodejs.org/en/download/current/

Node.js 15 中提供的一些功能包括:

  • AbortController

  • N-API 版本 7

  • npm 7

  • unhandled rejections 默认抛出

  • QUIC

  • V8 8.6

AbortController
Node.js 15 加入了 AbortController 的一个实验性实现。AbortController 是一个全局实用工具类,可根据 AbortController Web API,在选定的基于 Promise 的 API 中发出取消信号:
const ac = new AbortController();
ac.signal.addEventListener('abort'() => console.log('Aborted!'),
{ once: true });
ac.abort();
console.log(ac.signal.aborted); // Prints True

在上面的示例中,当调用 abortController.abort() 时发出 abort 事件。AbortController 将仅触发一次 abort 事件。附加到 AbortSignal 上的事件侦听器应使用{ once: true}选项(或等效于 EventEmitterAPI 的 once()),以确保一旦 abort 事件得到处理,便将事件侦听器删除。

有关更多信息,请参阅 AbortController 的 Node.js API 文档:

https://nodejs.org/docs/latest-v15.x/api/globals.html#globals_class_abortcontroller.

N-API 7

N-API 7 是上一个大版本以来的第一个新版,并带来了使用 ArrayBuffers 的更多方法。

 npm 7 

Node.js 15 附带了 npm 的新大版本 npm 7。npm 7 有许多新功能,包括 npm 工作区和新的 package-lock.json 格式。npm 7 还包括 yarn.lock 文件支持。npm 7 的一大变化是默认安装对等依赖项。有关 npm 7 的更多信息,包括重大更改的详细信息,请查看 GitHub 博客:

https://github.blog/2020-10-13-presenting-v7-0-0-of-the-npm-cli/

unhandled rejections 默认抛出

从 Node.js 15 开始,unhandledRejection 的默认模式已更改为 throw(以前是 warn)。在 throw 模式下,如果未设置 unhandledRejection hook,则会将 unhandledRejection 提升为未捕获的异常。拥有 unhandledRejection hook 的用户应该不会看到任何行为变化,并且仍然可以使用 --unhandled-rejections=mode 进程标志来切换模式。

Node.js 之前的多个版本都会默认发出 UnhandledPromiseRejectionWarning,而根据《Node.js 用户见解:Unhandled Promise Rejections》调查的结果,Node.js TSC 同意将模式切换为 throw。特别感谢 Mary Marchini 推动此决定。

 QUIC 

QUIC 是一种新的基于 UDP 的传输协议,它是 HTTP/3 的基础传输协议。QUIC 具有内置的 TLS 1.3 安全性、流控制、错误纠正、连接迁移和多路复用。

Node.js 15 附带 QUIC 的实验性支持,可通过 --experimental-quic 配置标志编译 Node.js 来启用。核心 net 模块公开了 Node.js QUIC 实现:
const { createQuicSocket } = require('net');

有关 QUIC 的更多信息,请查看 Node.js 文档:

https://nodejs.org/dist/latest-v15.x/docs/api/quic.html

 V8 8.6 

V8 JavaScript 引擎已更新为 V8 8.6(V8 8.4 是 Node.js 14 中的最新版本)。除了性能调整和改进之外,V8 更新还带来了以下语言特性:

  • Promise.any()——MDN

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/any

  • AggregateError——MDN

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError

  • String.prototype.replaceAll()——MDN

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll

  • 逻辑赋值运算符 &&=、||= 和??=——MDN

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators

以上特性均自 V8 8.5 开始引入,有兴趣的朋友可以在官方博客上了解有关 V8 的更多信息:

https://v8.dev/blog

其他项目新闻

除了向 Node.js 添加新功能之外,我们还非常注重改进贡献流程。今年,我们发起了 Node.js 贡献者调查,以收集有关贡献流程的反馈,确定需要改进的目标领域。我们的自动化和工具链也有了很大的改进。现在,只需添加一个 GitHub 标签就可以启动 CI 和发起提交,这使协作者可以更轻松地管理不断更新的拉取请求。

去年是 Node.js 成立 10 周年,我们启动了《Node.js 的下一个 10 年》的项目。这项工作的目的是反思 Node.js 在头十年中成功的原因,并为下一个十年中的成功设定方向。我们会审视整个项目的技术价值、支持者及其需求,开始为将来的讨论奠定基础。目前的一项成果是,我们已经创建了《技术价值》文档来指导我们的工作。

来自官方的安利:快升级

请试用新的 Node.js 15 版本!我们很高兴听到你的反馈!还应该使用 Node.js 15 测试你的应用程序和模块,以确保你的项目与最新的 Node.js 特性和更改兼容。

现在也是开始计划升级到 Node.js 14 的好时机,它将在下周升级到 LTS,支持会持续到直到 2023 年 4 月。

还要注意的是,Node.js 10 将于 2021 年 4 月结束生命周期。因此,如果你仍在使用 Node.js 10,我们建议你开始计划升级。

另请查看 Node.js 更新时间表:

https://github.com/nodejs/release#release-schedule

 原文地址

https://medium.com/@nodejs/node-js-v15-0-0-is-here-deb00750f278

❤️爱心三连击

1.看到这里了就点个在看支持下吧,你的点赞在看是我创作的动力。

2.关注公众号程序员成长指北,回复「1」加入Node进阶交流群!「在这里有好多 Node 开发者,会讨论 Node 知识,互相学习」!

3.也可添加微信【ikoala520】,一起成长。


“在看转发”是最大的支持

浏览 116
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报