Node.js 是一个可以在服务器上运行的 Javascript,现在最新版已经是 16 版本啦!这个新版本会取代之前稳定的 Node.js 14,成为现在的主流。对了,新版还有一个改动,就是以前没处理好的拒绝现在改成 throw 模式了。另外,还有 N-API 7 版本,这个版本引入了很多新的方法来处理数组缓冲区哦!
新特性
AbortController
Node.js 15 加入了 AbortController 的一个实验性实现。AbortController 是一个全局实用工具类,可根据 AbortController Web API,在选定的基于 Promise 的 API 中发出取消信号
N-API 7
N-API 7 是上一个大版本以来的第一个新版,并带来了使用 ArrayBuffers 的更多方法。
N-API是一个用于构建本机插件的API,它独立于底层Javascript运行时环境(如V8),并作为Node.js本身的一部分。此API将作为跨Node.js版本已编译的应用程序接口(Application Binary Interface)的稳定版,简称(ABI)。它是为了将Addons插件和底层Javascript引擎的改动隔离开来,并且允许在一个版本编译的模块不需要重新编译就可以在更高版本的Node.js上运行。
N-API是一个C语言的API,它确保了Node.js版本和不同编译器级别之间应用程序接口(ABI)的稳定性。C++ API可以更容易使用。为了支持使用C++,Node.js使用了一个C++包装器模块叫做node-addon-api,此包装器提供了一个可内联的C++ API。使用node-addon-api构建的二进制文件将依赖于Node.js导出的基于C函数符号的N-API接口,node-addon-api是一种更有效写代码的方法,用来编写调用N-API。
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 进程标志来切换模式。
QUIC
QUIC 是一种新的基于 UDP 的传输协议,它是 HTTP/3 的基础传输协议。QUIC 具有内置的 TLS 1.3 安全性、流控制、错误纠正、连接迁移和多路复用。
Node.js 15 附带 QUIC 的实验性支持,可通过 --experimental-quic 配置标志编译 Node.js 来启用。核心 net 模块公开了 Node.js QUIC 实现,有关 QUIC 的更多信息,请查看 Node.js 文档:https://nodejs.org/dist/latest-v15.x/docs/api/quic.html
V8 8.6
V8 Javascript 引擎已更新为 V8 8.6。
更新日志
v16.13.1
REPL预览与自动完成的改进
输出预览被更改为为自动完成的输入生成预览,而不是实际输入。
在预览期间按下现在将计算整个字符串,包括自动完成的部分。按取消该行为。
支持顶级等待
现在可以在异步函数之外使用await关键字了。