5月30日12点,Node.js 8正式发布了,这个版本具有一系列新功能和性能改进,并且这些功能和改进将获得长期支持(LTS)。

下面就来介绍Node.js 8版本中最重要的功能和修复。
新版本的代号是Carbon。Node.js 8将从2017年10月起,正式成为当前的LTS版本,并持续到2019年12月31日。这也意味着Node.js 6版本将在2018年4月进入到维护模式,并在2019年4月结束维护支持。
下载Node.js 8版本:https://nodejs.org/download/rc/v8.0.0-rc.2/
Async Hooks API 介绍
Async Hooks (以前称为AsyncWrap) API允许获取有关句柄对象生命周期的结构跟踪信息。
API发出的消息会将Node.js中所有句柄对象的生命周期告知给consumer。它试图解决类似于continuation-local-storage npm package这样的问题。
如果你正在使用continuation-local-storage,那么已经可以用称为cls-hook的async hooks来代替使用了 – 只是目前并不是使用async hooks的最好时机,所以需要谨慎使用!
Async Hooks API 在 Node.js 8 中如何工作
createHooks函数的注册功能会被每一个异步操作的不同生命周期事件调用。
const asyncHooks = require('async_hooks')
asyncHooks.createHooks({
init,
pre,
post,
destroy
})
了解更多Async Hooks,或查看正在进行的工作文档。这些函数将会根据处理程序对象的生命周期事件选择性触发。
N-API 介绍
N-API是用于构建原生插件的API。它独立于底层JavaScript运行时,并作为Node.js自身的一部分进行维护。这么做的目的是保证应用程序二进制接口(ABI)在不同Node.js版本之间能够保持稳定。
N-API的目的是将附加组件和基础JavaScript引擎中的更改区分开,以便原生插件在不需要重新编译情况下,就可以运行不同的Node.js版本。
了解更多N-API信息。
Node.js 8 中的缓冲区安全性改进
在Node.js 8版本之前,使用new Buffer(Number)构造函数分配的缓冲区并未使用ZEROS初始化内存空间。结果导致新的Buffer实例可能包含敏感信息,容易导致安全问题。
虽然这是一个用于提高创建新Buffer性能的决定,但是对大多数人来说,并不打算这么使用。因此从Node.js 8开始,使用new Buffer(Number)或Buffer(Number)分配的Buffers会被ZEROS自动填充。
将 V8 升级到 5.8:TurboFan & Ingnition
使用Node.js 8版本,底层的V8 JavaScript引擎也会更新。
对于Node.js用户来说,最大的变化就是引入TurboFan和Ignition。Ignition是V8的解释器,TurboFan是优化编译器。
“Ignition和TurboFan的联合使用已经开发了近3½年,它代表了V8团队集体认识的最终结果,是V8团队收集了JavaScript的实测性能并仔细分析了Full-codegen的缺点和Crankshaft的结果。这也是能够在未来几年内继续优化JavaScript语言体系的基础。“ - Daniel Clifford和V8团队
目前V8的编译管道如下图所示。
这个管道的最大问题是,新的语言功能必须在管道的不同部分实现,这就增加了大量额外的开发工作。
下面是简化的管道,没有了FullCode Generator和Crankshaft:
新管道大大降低了V8团队的技术负担,并实现了很多之前无法实现的改进。
了解更多TurboFan and Ignition 和 TurboFan Inlining Heuristics 。
将 npm 升级到 5.0.0
新的Node.js 8版本还附带npm 5 - 最新版本的npm CLI。
新 npm 版本的亮点:
Node.js 8 版本中的其它显著改变
Buffer
Buffer方法现在接受Uint8Array作为输入
Child Process
Console
使用控制台方法时,错误事件发送现在受到了抑制
Domains
Native Promise实例现在是域感知的
文件系统
HTTP
溢出的Cookie headers会被连接成一个字符串
该httpResponse.writeHeader( )方法已被弃用
Stream
Stream现在支持destroy( )和_destroy( ) API
TLS
该rejectUnauthorized选项现在默认为true
URL
WHATWG URL的实现,现在是Node.js API完全支持的
Node.js 8 下一步要做什么
Node.js 8版本令我们兴奋,因为它包含了很多有趣的提升,例如Async Hooks API,这些API在当前的文档状态是很难掌握的。我们将尽快开始使用新版本,并尽快提供给用户新功能的更详细说明。
# node.js
# 8
# 重要功能和修复
# Node.js v8.0.0正式发布!看看带来了哪些主要新特性
# Centos6.8下Node.js安装教程
# 8 行 Node.js 代码实现代理服务器
# Node.js实现兼容IE789的文件上传进度条
# windows8.1+iis8.5下安装node.js开发环境
# Windows8下搭建Node.js开发环境教程
# shell脚本转发80端口数据包给Node.js服务器
# 已被
# 将会
# 句柄
# 升级到
# 新版本
# 有一
# 如果你
# 文档
# 也会
# 很难
# 将在
# 目的是
# 不需要
# 最重要
# 可以用
# 并在
# 这是一个
# 这也
# 这就
# 详细说明
相关文章:
电脑免费海报制作网站推荐,招聘海报哪个网站多?
如何高效利用亚马逊云主机搭建企业网站?
建站主机选购指南与交易推荐:核心配置解析
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
广东企业建站网站优化与SEO营销核心策略指南
魔毅自助建站系统:模板定制与SEO优化一键生成指南
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
高端云建站费用究竟需要多少预算?
如何在阿里云部署织梦网站?
高端建站三要素:定制模板、企业官网与响应式设计优化
如何通过商城免费建站系统源码自定义网站主题?
如何配置支付宝与微信支付功能?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
建站之星云端配置指南:模板选择与SEO优化一键生成
如何通过服务器快速搭建网站?完整步骤解析
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
如何有效防御Web建站篡改攻击?
javascript中的try catch异常捕获机制用法分析
如何设置并定期更换建站之星安全管理员密码?
c++怎么用jemalloc c++替换默认内存分配器【性能】
c# await 一个已经完成的Task会发生什么
常州自助建站费用包含哪些项目?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
简历在线制作网站免费版,如何创建个人简历?
高性价比服务器租赁——企业级配置与24小时运维服务
建站之星安装路径如何正确选择及配置?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
建站之星如何实现PC+手机+微信网站五合一建站?
已有域名和空间,如何快速搭建网站?
浅析上传头像示例及其注意事项
建站之星3.0如何解决常见操作问题?
html制作网站的步骤有哪些,iapp如何添加网页?
成都网站制作报价公司,成都工业用气开户费用?
如何设计高效校园网站?
如何在建站主机中优化服务器配置?
香港服务器如何优化才能显著提升网站加载速度?
如何配置IIS站点权限与局域网访问?
如何选择适合PHP云建站的开源框架?
招贴海报怎么做,什么是海报招贴?
如何通过智能用户系统一键生成高效建站方案?
如何续费美橙建站之星域名及服务?
网页设计网站制作软件,microsoft office哪个可以创建网页?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
建站之星如何开启自定义404页面避免用户流失?
*请认真填写需求信息,我们会在24小时内与您取得联系。