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


Posted in Javascript onJune 02, 2017

前言

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的新特性可以参考npm的文档。

Node.js v8.0.0还包括子进程、控制台、文件系统、流、HTTP、TLS、URL等方面的改进。

总结

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

Javascript 相关文章推荐
jquery.simple.tree插件 更简单,兼容性更好的无限树插件
Sep 03 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
Jan 09 Javascript
JavaScript中的值类型转换介绍
Dec 31 Javascript
JavaScript数组操作详解
Feb 04 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
Jun 13 Javascript
使用Require.js封装原生js轮播图的实现代码
Jun 15 Javascript
JS库 Highlightjs 添加代码行号的实现代码
Sep 13 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
Aug 13 Javascript
微信小程序开发之自定义tabBar的实现
Sep 06 Javascript
js实现图片放大并跟随鼠标移动特效
Jan 18 Javascript
JS module的导出和导入的实现代码
Feb 25 Javascript
vue-cli 关闭热更新操作
Sep 18 Javascript
详解在AngularJS的controller外部直接获取$scope
Jun 02 #Javascript
详解angularJs中关于ng-class的三种使用方式说明
Jun 02 #Javascript
vue.js删除动态绑定的radio的指定项
Jun 02 #Javascript
vue.js选中动态绑定的radio的指定项
Jun 02 #Javascript
Spring shiro + bootstrap + jquery.validate 实现登录、注册功能
Jun 02 #jQuery
Vue.js中数据绑定的语法教程
Jun 02 #Javascript
SpringMVC+bootstrap table实例详解
Jun 02 #Javascript
You might like
聊天室php&mysql(五)
2006/10/09 PHP
php 获取远程网页内容的函数
2009/09/08 PHP
使用Sphinx对索引进行搜索
2013/06/25 PHP
解析php5配置使用pdo
2013/07/03 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
PHP多进程编程实例详解
2017/07/19 PHP
php探针不显示内存解决方法
2019/09/17 PHP
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
jQuery图片滚动图片的效果(另类实现)
2013/06/02 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
javascript折半查找详解
2015/01/26 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
2015/12/25 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
Python列表list数组array用法实例解析
2014/10/28 Python
Python+Django搭建自己的blog网站
2018/03/13 Python
python向已存在的excel中新增表,不覆盖原数据的实例
2018/05/02 Python
windows下添加Python环境变量的方法汇总
2018/05/14 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
python数字类型math库原理解析
2020/03/02 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
露营世界:Camping World
2017/02/02 全球购物
Hotels.com越南:酒店预订
2019/10/29 全球购物
世界上最大的铁人三项商店:Tri UK
2020/11/04 全球购物
先进人物事迹材料
2014/12/29 职场文书
2015年助残日活动总结
2015/03/27 职场文书
2016年寒假学习心得体会
2015/10/09 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
python图像处理 PIL Image操作实例
2022/04/09 Python
Mysql开启外网访问
2022/05/15 MySQL