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 表单下所有元素的隐藏
Jul 25 Javascript
基于jQuery的输入框无值自动显示指定数据的实现代码
Jan 24 Javascript
js触发asp.net的Button的Onclick事件应用
Feb 02 Javascript
javascript教程之不完整的继承(js原型链)
Jan 13 Javascript
推荐6款基于jQuery实现图片效果插件
Dec 07 Javascript
解决jquery实现的radio重新选中的问题
Jul 03 Javascript
jquery判断复选框是否被选中的方法
Oct 16 Javascript
PhotoSwipe异步动态加载图片方法
Aug 25 Javascript
使用Javascript监控前端相关数据的代码
Oct 27 Javascript
微信小程序 rich-text的使用方法
Aug 04 Javascript
three.js中文文档学习之通过模块导入
Nov 20 Javascript
Node.js 在本地生成日志文件的方法
Feb 07 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中通过curl检测页面是否被百度收录
2013/09/27 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
php关联数组与索引数组及其显示方法
2018/03/12 PHP
基于PHP实现用户在线状态检测
2020/11/10 PHP
window.open以post方式将内容提交到新窗口
2012/12/26 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
jQuery下拉菜单的实现代码
2016/11/03 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
2018/07/13 Javascript
使用JQuery自动完成插件Auto Complete详解
2019/06/18 jQuery
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
vue实现分页加载效果
2019/12/24 Javascript
微信小程序修改checkbox的样式代码实例
2020/01/21 Javascript
详解JavaScript数据类型和判断方法
2020/09/04 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
2021/01/26 Vue.js
Python中正则表达式的用法实例汇总
2014/08/18 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
2017/07/07 Python
python读取文件名称生成list的方法
2018/04/27 Python
Python math库 ln(x)运算的实现及原理
2019/07/17 Python
pytorch 计算ConvTranspose1d输出特征大小方式
2020/06/23 Python
Python 读取位于包中的数据文件
2020/08/07 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
python openCV自制绘画板
2020/10/27 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
GNC健安喜官方海外旗舰店:美国著名保健品牌
2017/01/04 全球购物
莱德杯高尔夫欧洲官方商店:Ryder Cup Shop
2019/08/14 全球购物
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
我爱家乡演讲稿
2014/09/12 职场文书
批评与自我批评总结
2014/10/17 职场文书
横店影视城导游词
2015/02/06 职场文书
react国际化react-intl的使用
2021/05/06 Javascript
如何用threejs实现实时多边形折射
2021/05/07 Javascript
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL
vue+spring boot实现校验码功能
2021/05/27 Vue.js