欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Node.js v8.0.0正式发布!看看带来了哪些主要新特性

程序员文章站 2023-02-20 11:31:16
前言 node.js于5月30号在其官方博客上发布了node.js v8.0.0。这一版本将成为当前的长期维护版本,从2017年10月开始到2019年12月31号。而no...

前言

node.js于5月30号在其官方博客上发布了node.js v8.0.0。这一版本将成为当前的长期维护版本,从2017年10月开始到2019年12月31号。而node.js v6.0.0将会在2018年4月进入维护模式,并于2019年4月结束。

最新发布的版本代号为carbon,带来了很多重要的特性改进和一些全新的特性。

引入async_hooks模块

新引入实验性模块async_hooks(之前叫作async_wrap),它包含了一组用于诊断的api,开发人员可以用它监控node.js事件循环里的各种操作,跟踪句柄对象全生命周期的事件。可以通过该模块的createhooks方法注册用于处理句柄对象生命周期各个阶段事件的函数。

const asynchooks = require('async_hooks')
asynchooks.createhooks({
init,
pre,
post,
destroy
})

更多关于这个新模块的内容可以查看文档和它的情况。

引入n-api

node.js api(n-api)为开发人员提供了一组新的实验性api,用于开发原生插件。它独立于底层的javascript运行时,并作为node.js的一部分进行维护。引入n-api的主要目的是提供一套与虚拟机无关的应用二进制接口(aba),这样插件只要编译一次就可以运行在各种版本的node.js上,甚至包括来自其他公司的虚拟机,比如微软的chakra core。

n-api也是一个实验特性,更多有关n-api的信息可以参考。开发人员现在就可以这套api,并可以提供反馈以便更好地改进api。

buffer安全性的改进

在v8.0.0之前,buffer是通过new buffer(num)方法来分配的,并没有使用零值来初始化内存空间,新建的buffer对象可能包含敏感数据,会导致安全问题。

不过,使用buffer(num)构造函数创建出来的对象对性能有一点影响,如果开发人员更加看重性能,那么可以使用buffer.allocunsafe(num)来创建一个未初始化内存的对象。

// 使用零值初始化过的对象
const safebuffer1 = buffer.alloc(10);
const safebuffer2 = new buffer(10);
// 未初始化的对象
const unsafebuffer = buffer.allocunsafe(10);

升级v8引擎到5.8版本

升级v8引擎带来了更好的性能和更多面向开发人员的api。v8 5.8可以保证aba兼容5.9和即将到来的6.0,从而确保node.js原生插件的稳定性。后续还会逐步将引擎升级到5.9和6.0。

升级引擎还意味着新的编译器管道——turbofan和ignition。ignition是v8引擎的解释器,turbofan是优化编译器,虽然它们在之前就已存在,但把它们作为默认的组合还是首次(将在v8 5.9里实现)。这是一个重大的转变,将为性能带来极大的提升。

升级npm到5.0.0

node.js v8.0.0包含了最新的npm 5.0.0,其主要特性如下。

  • 新的标准化文件锁机制。
  • 不再需要--save,所有的安装都是默认保存的。
  • node-gyp现在支持windows。
  • 新的发布包含sha512和sha1校验和检查。

更多有关npm 5.0.0的新特性可以参考。

node.js v8.0.0还包括子进程、控制台、文件系统、流、http、tls、url等方面的改进。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。