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性能优化28条建议你值得借鉴
Feb 16 Javascript
jQuery中bind()方法用法实例
Jan 19 Javascript
利用Node.js制作爬取大众点评的爬虫
Sep 22 Javascript
JS设置时间无效问题的解决办法
Feb 18 Javascript
jQuery图片切换动画效果
Feb 28 Javascript
Node+Express+MongoDB实现登录注册功能实例
Apr 23 Javascript
微信小程序websocket聊天室的实现示例代码
Feb 12 Javascript
js+html实现周岁年龄计算器
Jun 25 Javascript
Vue实现input宽度随文字长度自适应操作
Jul 29 Javascript
jQuery实现鼠标拖拽登录框移动效果
Sep 13 jQuery
JQuery Ajax如何实现注册检测用户名
Sep 25 jQuery
ECharts transform数据转换和dataZoom在项目中使用
Dec 24 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原理之异常机制深入分析
2010/08/08 PHP
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
javascript 打印页面代码
2009/03/24 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
vue.js项目nginx部署教程
2018/04/05 Javascript
简单了解小程序+node梳理登陆流程
2019/06/24 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
Vue+ElementUI使用vue-pdf实现预览功能
2019/11/26 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
Python实现的一个简单LRU cache
2014/09/26 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
2017/05/24 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
NBA欧洲商店(西班牙):NBA Europe Store ES
2019/04/16 全球购物
机修工工作职责
2014/02/21 职场文书
简单的项目建议书模板
2014/03/12 职场文书
法制报告会主持词
2014/04/02 职场文书
初中生评语大全
2014/04/24 职场文书
餐厅周年庆活动方案
2014/08/25 职场文书
2016年寒假家长评语
2015/10/10 职场文书
pytorch中的torch.nn.Conv2d()函数图文详解
2022/02/28 Python
Python中的turtle画箭头,矩形,五角星
2022/03/16 Python
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android