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网页关键字高亮代码
Jul 30 Javascript
jquery eval解析JSON中的注意点介绍
Aug 23 Javascript
两种不同的方法实现js对checkbox进行全选和反选
May 13 Javascript
jQuery中extend()和fn.extend()方法详解
Jun 03 Javascript
JavaScript对象属性检查、增加、删除、访问操作实例
Jul 08 Javascript
Ajax清除浏览器js、css、图片缓存的方法
Aug 06 Javascript
javascript日期操作详解(脚本之家整理)
Sep 05 Javascript
阿里巴巴技术文章分享 Javascript继承机制的实现
Jan 14 Javascript
第一次接触JS require.js模块化工具
Apr 17 Javascript
浅谈js中的this问题
Aug 31 Javascript
vue router demo详解
Oct 13 Javascript
微信小程序input框中加入小图标的实现方法
Jun 19 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版本的几种方法小结
2008/03/25 PHP
浅析php中jsonp的跨域实例
2013/06/21 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
PHP哈希表实现算法原理解析
2020/12/11 PHP
使javascript也能包含文件
2006/10/26 Javascript
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
Javascript学习笔记一 之 数据类型
2010/12/15 Javascript
js替换字符串的所有示例代码
2013/07/23 Javascript
js 日期比较相关天数代码
2014/04/02 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
JS实现的手机端精简幻灯片效果
2016/09/05 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
移动端界面的适配
2017/01/11 Javascript
微信小程序技巧之show内容展示,上传文件编码问题
2017/01/23 Javascript
Nginx 配置多站点vhost 的方法
2018/01/07 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
vue-router之实现导航切换过渡动画效果
2019/10/31 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
Python的Django框架中的URL配置与松耦合
2015/07/15 Python
Python线性方程组求解运算示例
2018/01/17 Python
Python get获取页面cookie代码实例
2018/09/12 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
Python如何根据时间序列数据作图
2020/05/12 Python
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
怎样写留学自荐信
2013/11/11 职场文书
医院护士工作检讨书
2014/10/26 职场文书
七年级地理教学计划
2015/01/22 职场文书
情人节活动总结范文
2015/02/05 职场文书
毕业生入职感言
2015/07/31 职场文书
大学新生入学感想
2015/08/07 职场文书
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL