Node.js v12.17.0 (LTS) 发布
Node.js v12.17.0 (LTS) 已发布,更新内容包括移除 ECMAScript 模块--experimental-modules
flag、引入 AsyncLocalStorage API(实验性阶段)、文件系统 API、改进对 REPL 的预览等内容。
移除 ECMAScript 模块的--experimental-modules
flag
从 Node.js 12.17.0 开始,使用 ECMAScript 模块(ESM)不再需要--experimental-modules
flag。不过 Node.js 中的 ESM 实现仍处于实验性阶段。建议使用者在生产环境谨慎使用此功能。
与 Node.js 14 不同,在 Node.js v12.17.0 中无论是在应用程序的入口端点使用模块时,还是第一次调用动态 import() 时,使用 ESM 仍会触发 runtime 实验性警告。
团队表示预计在今年晚些时候,可能在10月下旬,也就是 Node.js 14 将成为 LTS 的时候,移除 Node.js 12 中的警告。
引入 AsyncLocalStorage API (experimental)
Async Hooks 模块已引入 AsyncLocalStorage 类。
此 API 这次在异步操作中保存一个上下文。例如,如果在 AsyncLocalStorage 的一个实例中存储了一个序列id,对于每一个进入服务器的 HTTP 请求,就可以在不访问当前 HTTP 请求的情况下检索这个 id。
const http = require('http'); const { AsyncLocalStorage } = require('async_hooks'); const asyncLocalStorage = new AsyncLocalStorage(); function logWithId(msg) { const id = asyncLocalStorage.getStore(); console.log(`${id !== undefined ? id : '-'}: `, msg); } let idSeq = 0; http.createServer((req, res) => { asyncLocalStorage.run(idSeq++, () => { logWithId('start'); // Imagine any chain of async operations here. setImmediate(() => { logWithId('finish'); res.end(); }); }); }).listen(8080);
在上面的例子中,logWithId 函数始终都知道当前的请求id是什么,即使有多个请求并行时也是如此。
此 API 的使用案例包括:
- 日志
- 用户认证
- 性能追踪
- 错误追踪和处理等
- ……
注意:此 API 仍处于实验性阶段,有些方法可能会在未来的 Node.js 版本中发生变化。
文件系统 API(File system APIs)
新函数:fs.readv
此新函数(以及它的 sync 和 promisified 版本)会取一个数组的ArrayBufferView
元素,并将其读取的数据按顺序写入缓冲区。
fs.read
的可选参数
fs.read
有了一个新的重载(以及它的 sync 和 promisified 版本),允许选择性地传递任何偏移、长度和位置(offset
, length
和position
)参数。
详情查看:https://nodejs.org/en/blog/release/v12.17.0/
下载地址:https://nodejs.org/en/download/
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Oracle Solaris 11.4 SRU21 发布,类 Unix 操作系统
Oracle Solaris 11.4 SRU21已发布。用户可通过支持存储库中的“pkg 更新”或从My Oracle Support Doc ID 2433412.1下载 SRU 来获得。 该 SRU 引入了以下新功能和组件: 新的驱动程序/网络/以太网/mlxne 软件包,支持 Mellanox ConnectX-4 和 ConnectX-5 100Gb 以太网设备。请注意,此驱动程序不支持 SR-IOV,而仅支持“bare metal”。尚不支持 ConnectX-6 设备。 Solaris printing 已更新为使用 cups-2.3.1、cups-filters-1.25.11、ghostscript-9.27、hplip-3.19.5 和 gutenprint-5.2.13 来代替过时的 cups-1.4.5 软件。 fribid libsass 和 sassc libdazzle mallard-ducktype cidfmap 添加了日语字体 适用于 Python 3.7 的 dbus-python 感兴趣的用户可以在My Oracle Support Doc 2...
- 下一篇
OpenSSH 8.3 发布
OpenSSH 8.3 已经发布了。OpenSSH 是 100% 完整的 SSH 协议 2.0 版本的实现,并且包括 sftp 客户端和服务器支持,它用于远程登录的主要连接工具。OpenSSH 对所有流量进行加密,避免窃听、连接劫持等攻击。此外,OpenSSH 还提供了一整套安全隧道功能、多种身份验证方法和复杂的配置选项。 此版本主要聚焦在 bug 修复,包括修复了: ssh(1): 修复IdentitiesOnly=yes 以适用于从 PKCS11Provider 加载的密钥 ssh-keygen(1): 尝试转换无效的 RFC4716 私钥时,避免 NULL 取消引用 scp(1): 当使用“scp -3”执行远程复制时,启动第二个 ssh(1) 通道并启用 BatchMode = yes 以避免提示的混乱和不确定性排序 * ssh(1), ssh-keygen(1): 使用 FIDO 令牌签署挑战时,在中间件层而不是 OpenSSH 代码中对要签名的消息进行哈希处理。这允许使用隐式执行哈希的安全密钥中间件,例如 Windows Hello ssh(1): 修复了“已知主机文件过多...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- CentOS8安装Docker,最新的服务器搭配容器使用