随着node.js版本的发布(5月30日下午12点发布),我们获得了最新的LTS版本,其中包含了一系列新功能和性能改进。
在本文中,我们将介绍Node.js版本的重要功能和修复。
与之前的Node.js版本相比,8.0.0的功能相当强大。尽管其中一些仍在进行中,但许多仍在讨论中。但基本稳定可测试詹姆斯姆斯内尔(@贾斯内尔)2017年5月30日
新版本的代号是Carbon。节点8将从2017年10月起成为当前的LTS版本,并将持续到2019年12月31日。这也意味着Node.js 6.x版本将于2018年4月进入维护模式,2019年4月将被放弃。
您可以在这里获得8.0版本文档
异步钩子应用编程接口介绍
异步钩子(以前称为异步包装)应用编程接口允许您获取关于句柄对象生命周期的结构跟踪信息。
该应用编程接口可以发送消息来通知消费者Node.js中所有句柄对象的生命周期。它可以解决与延续本地存储NPM包相同的问题,但是它现在可以在Node的核心代码中实现。
如果你曾经使用过延续-本地-存储,你现在有了异步钩子,还有一个替代的-cls-钩子,但是它还不稳定,所以要小心使用!
异步钩子应用编程接口在Node.js 8中是如何工作的?
createHooks函数可以为每个异步操作的生命周期注册钩子函数。
const async hooks=require(' async _ hooks ')async hooks . createhooks({ init,pre,post,destroy})这些函数将根据处理程序的生命周期事件触发。
在这里阅读更多关于异步挂钩的信息,或者在这里查看当前进度。
氮-应用编程接口简介
N-API是一个用于编写本机插件的API。它独立于底层的JavaScript运行环境,但作为Node.js本身的一部分进行维护。它的目标是使应用程序二进制接口(ABI)在不同版本的Node.js之间保持稳定
N-API的目的是将额外的组件从底层JavaScript引擎的更改中分离出来,这样本机组件就可以在不同版本的Node环境中运行,而无需重新编译。
查看更多关于N-API的信息。
节点8中缓冲区安全性的改进
在Node.js 8之前,新的Buffer(Number)用于创建一个Buffer,但是内存没有初始化为0。因此,新的缓冲区实例可能包含敏感信息,从而导致安全问题。
虽然这可以加快缓冲区的创建,但在大多数情况下是不可行的。因为从Node.js 8开始,使用新Buffer(Number)或Buffer(Number)的人会自动将内存设置为0。
将V8升级到5.8:为涡扇发动机和发动机做准备
有了Node.js 8,底层的V8 JavaScript引擎也将得到更新。
它给Node.js用户带来的最大变化就是可以在V8 5.9中引入涡扇和点火。点火是V8的解释器,涡扇是优化编译器。
“点火和涡扇管道已经发展了近3年。它代表了V8团队通过测量真实的JavaScript性能并仔细考虑当前语言的缺点而获得的最终结果。这为我们未来几年继续优化JavaScript打下了基础。-丹尼尔克利福德和V8团队
以下是Node 8版本之前的V8编译管道的示例图
图片来源:Benedikt Meurer
这个管道最大的问题是新的语言函数必须在管道的不同部分实现,这增加了很多额外的开发工作。
这是一个没有全代码生成器和曲轴的简化管道外观:
图片来源:Benedikt Meurer
这条新管道大大减轻了V8团队的技术负担,实现了很多以前不可能实现的优化。
阅读更多关于涡扇发动机和点火以及涡扇发动机内联启发的信息
将npm升级到5.0.0
Node.js 8的新版本还附带了NPM 5——NPM CLI的最新版本。
新npm版本的亮点:
新的标准化文件锁定功能用于跨包管理器兼容性(package-lock.json),这是一种新的格式和包覆层语义。
-不再需要保存,默认情况下将保存所有安装。节点gyp现在支持Windows
现在将包括Sha512和sha1检查。
Node.js 8中其他值得注意的变化
缓冲区缓冲区方法现在接受Uint8Array作为输入
子进程
优化参数和压井信号验证
Childprocess方法接受Uint8Array作为输入
控制台使用控制台发送的错误事件现在受到限制
域本地承诺实例现在是域敏感的
文件系统
实用程序类fs。SyncWriteStream已被否决
fs.read()字符串接口已被删除
超文本传送协议
传出Cookie头被连接成一个字符串
httpResponse.writeHeader()方法已被否决
流流现在支持销毁()和_ _销毁()
TLS拒绝未授权选项现在默认为真
网址WHATWG网址实现现在是一个完全支持的节点. js应用编程接口
接下来是node.js8。
Node.js 8给我们带来了非常有趣的改进,包括目前很难掌握的Async Hooks API,文档也在不断改进。我们会尽快开始播放新版本,并尽快给大家更详细的讲解这些功能。