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 this用法小结
Dec 19 Javascript
Javascript执行效率全面总结
Nov 04 Javascript
JS判断客服QQ号在线还是离线状态的方法
Jan 13 Javascript
jquery实现简单合拢与展开网页面板的方法
Sep 01 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
Nov 30 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
Dec 17 Javascript
Vue的Flux框架之Vuex状态管理器
Jul 30 Javascript
JavaScript事件冒泡与事件捕获实例分析
Aug 01 Javascript
zepto.js 实时监听输入框的方法
Dec 04 Javascript
微信小程序自定义头部导航栏和导航栏背景图片 navigationStyle问题
Jul 26 Javascript
jquery实现手风琴案例
May 04 jQuery
vuex分模块后,实现获取state的值
Jul 26 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根据用户语言跳转相应网页
2015/11/04 PHP
Yii2中添加全局函数的方法分析
2017/05/04 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
从新浪弄下来的全屏广告代码 与使用说明
2007/03/15 Javascript
深入理解javascript学习笔记(一) 编写高质量代码
2012/08/09 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
2014/02/13 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
微信小程序 教程之模块化
2016/10/17 Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
2016/10/27 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
微信小程序实现九宫格抽奖
2020/04/15 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
python 类详解及简单实例
2017/03/24 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
和孩子一起学习python之变量命名规则
2018/05/27 Python
Python读取excel中的图片完美解决方法
2018/07/27 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
python判断字符串或者集合是否为空的实例
2019/01/23 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
java程序员面试交流
2012/11/29 面试题
出纳工作岗位责任制
2014/02/02 职场文书
公司中层干部的自我评价分享
2014/03/01 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
运动会稿件100字
2014/09/24 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js