5月30日12点,Node.js 8正式发布。这个版本有一系列新的功能和性能改进,这些功能和改进将得到长期支持(LTS)。
让我们介绍一下Node.js8中最重要的功能和修复
新版本的代号是Carbon。Node.js 8将从2017年10月正式成为当前的LTS版本,并持续到2019年12月31日。这也意味着Node.js 6版本将于2018年4月进入维护模式,2019年4月结束维护支持。
下载Node.js 8的版本:https://nodejs.org/download/rc/v8.0.0-rc.2/
异步钩子应用编程接口介绍
异步钩子(以前称为异步包装)应用编程接口允许您获取关于句柄对象生命周期的结构跟踪信息。
API发送的消息将通知消费者Node.js中所有句柄对象的生命周期.它试图解决延续本地存储NPM包等问题。
如果您正在使用延续本地存储,您可以使用名为cls-hook的异步钩子,但目前不是使用异步钩子的最佳时机,因此您需要谨慎使用它们!
异步钩子应用编程接口在Node.js 8中是如何工作的
createHooks函数的注册函数将被每个异步操作的不同生命周期事件调用。
Const异步钩子=要求(' async _ hooks ')异步钩子。创建挂钩({初始化、预发布、发布、销毁})了解有关异步挂钩的更多信息,或检查正在进行的工作文档。这些函数将根据处理程序对象的生命周期事件有选择地触发。
氮-应用编程接口简介
N-API是一个用于构建本机插件的API。它独立于底层的JavaScript运行时,并作为Node.js本身的一部分进行维护。这样做的目的是确保应用程序二进制接口(ABI)能够在不同版本的Node.js之间保持稳定
N-API的目的是区分附加组件和基本JavaScript引擎中的更改,这样本机插件就可以运行不同版本的Node.js,而无需重新编译。
了解更多关于N-API的信息。
node.js8中缓冲区安全性的改进
在Node.js 8版本之前,使用新的Buffer(Number)构造函数分配的缓冲区没有使用ZEROS来初始化内存空间。因此,新的缓冲区实例可能包含敏感信息,这很容易导致安全问题。
虽然这是为了提高创建新缓冲区的性能而做出的决定,但大多数人并不打算使用它。因此,从Node.js 8开始,用新的Buffer(Number)或Buffer(Number)分配的缓冲区将自动由ZEROS填充。
将V8升级到5.8:涡轮风扇和发动机
随着Node.js 8版本的发布,底层的V8 JavaScript引擎也将更新。
对于Node.js用户来说,最大的变化就是涡扇和点火的引入。点火是V8的解释器,涡扇是优化编译器。
“点火和涡扇的联合使用已经发展了近三年,这代表了V8团队集体认识的最终结果。这是V8团队收集了JavaScript的实测性能,并仔细分析了Full-codegen和曲轴的缺点的结果。这也是未来几年继续优化JavaScript语言体系的基础。”-丹尼尔克利福德和V8团队
目前V8的编译流水线如下图所示。
这个管道最大的问题是新的语言函数必须在管道的不同部分实现,这增加了很多额外的开发工作。
以下是不带全代码生成器和曲轴的简化管道:
新管道大大减轻了V8团队的技术负担,实现了很多之前无法实现的改进。
了解更多关于涡扇发动机和点火以及涡扇发动机内联试探法的信息。
将npm升级到5.0.0
Node.js 8的新版本还附带了NPM 5——NPM CLI的最新版本。
新npm版本的亮点:
不再需要用于跨包管理器兼容性的新的标准化文件锁定功能(package-lock.json)和用于shrinkwrap - save的新格式和语义,因为默认情况下所有安装都将保存node-gyp,现在支持Windows的node-gyp.cmd的新版本将包括sha512和sha1,以验证node.js8版本中的其他重大更改。
缓冲器
Buffer方法现在接受Uint8Array作为输入
子进程
论证和扼杀信号的验证得到改进。子进程方法接受Uint8Array作为控制台输入
使用console方法时,错误事件的发送现在被抑制
域
nativeprovidence实例现在是域感知的
文件系统
实用程序类fs。SyncWriteStream已被否决。已弃用的fs.read()字符串接口已被删除HTTP
溢出Cookie头将被连接成一个字符串
httpResponse.writeHeader()方法已被否决
溪流
流现在支持销毁()和销毁()API
坦克激光瞄准镜(Tank Laser-Sight的缩写)
拒绝未授权选项现在默认为真
统一资源定位器
现在,Node.js API完全支持WHATWG URL的实现
Node.js 8接下来会做什么
Node.js 8的版本让我们很兴奋,因为它包含了很多有趣的增强,比如Async Hooks API,这在当前的文档状态下很难掌握。我们将尽快开始使用新版本,并尽快向用户提供新功能的更详细描述。