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 相关文章推荐
javascript call方法使用说明
Jan 11 Javascript
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
Mar 01 Javascript
JS中的构造函数详细解析
Mar 10 Javascript
jquery 自定义容器下雨效果可将下雨图标改为其他
Apr 23 Javascript
浅谈JavaScript的内置对象和浏览器对象
Jun 03 Javascript
JS实现的打字机效果完整实例
Jun 20 Javascript
Bootstrap 模态框实例插件案例分析
Dec 28 Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 Javascript
jquery.validate.js 多个相同name的处理方式
Jul 10 jQuery
vue下跨域设置的相关介绍
Aug 26 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
Nov 12 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
Jan 21 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 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
2012/05/16 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
JS无限树状列表实现代码
2011/01/11 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
微信小程序 实现tabs选项卡效果实例代码
2016/10/31 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
python检查指定文件是否存在的方法
2015/07/06 Python
对Python 内建函数和保留字详解
2018/10/15 Python
Pytorch中accuracy和loss的计算知识点总结
2019/09/10 Python
pytorch dataloader 取batch_size时候出现bug的解决方式
2020/02/20 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
HTTP状态码详解
2021/03/18 杂记
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
杭州SQL浙江浙大网新恩普软件有限公司
2013/07/27 面试题
大一自我鉴定范文
2013/12/27 职场文书
学生自我鉴定模板
2013/12/30 职场文书
社区八一活动方案
2014/02/03 职场文书
汽车装潢店创业计划书范文
2014/02/05 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
副总经理岗位职责范本
2014/09/30 职场文书
用人单位终止解除劳动合同证明书
2014/10/06 职场文书
借款民事起诉状范文
2015/05/19 职场文书
走进毛泽东观后感
2015/06/04 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js