随着 Node.js 8.0 版本的发布(5月30日下午12点发布),我们得到了最新的 LTS 版本,具有一系列新功能和性能改进。

本文我们将介绍 Node.js 8.0 版本中重要的功能和修复。

与以前的 Node.js 版本相比,8.0.0相当强大。虽然这其中有些还正在进行,很多正在商榷。但基本上是稳定和可测试的
•James M Snell(@jasnell)2017年5月30日

新版本的代号是 Carbon。Node 8 将从2017年10月起成为现行的 LTS 版本,并将保持到2019年12月31日。这也意味着 Node.js 6.x 版本将在 2018 年 4 月进入维护模式,并在 2019 年 4 月废弃。

你可以在这里获取 8.0 release文档

Async Hooks API 简介

Async Hooks(以前称为 AsyncWrap )API允许您获取有关句柄对象生命周期的结构跟踪信息。

API 可以发送消息通知消费者关于 Node.js 中所有句柄对象的生命周期。它可以解决与continuation-local-storage npm package相同的问题,只不过现在可以在 Node 核心代码中实现。

如果您曾经使用过 continuation-local-storage,那么现在有了 async hooks ,目前有一个替代方案--cls-hooked  ,但目前尚未稳定,因此谨慎使用!

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 环境中运行并且不需要重新编译。

查看更多N-API的相关信息。

Node 8 中 Buffer 安全性的改进

在 Node.js 8之前,用new Buffer(Number)来创建一个Buffer,并未将内存初始化为0。因此,新的缓冲区实例可能包含敏感信息,导致安全问题。

虽然这样可以使 Buffer 的创建更快,但对于大多数情况来看,这并不可行。因为从 Node.js 8 开始,使用new Buffer(Number) 或者Buffer(Number) 的将会自动将内存置为0.

将V8升级到5.8:为 TurboFan 和Ingnition 做准备

使用 Node.js 8,底层的V8 JavaScript引擎也会被更新。

它给 Node.js 用户带来的最大的变化就是可以在 V8 5.9中引入TurboFan 和 Ignition 。Ignition 是 V8 的解释器,而 TurboFan 是优化编译器。


“ Ignition 和 TurboFan 管道已经开发了近3½年。它代表了 V8 团队通过测量现实 JavaScript 性能并仔细考虑了当前语言中的缺点而获得的最终结果。这为我们能够在未来几年内继续优化 JavaScript 奠定了基础。- Daniel Clifford 和 V8 团队

下面是 Node 8 版本之前的 V8 编译管道的示例图

图片来源:Benedikt Meurer

这个管道的最大问题是新的语言功能必须在管道的不同部分实现,增加了大量额外的开发工作。

这是简化的管道外观,没有 FullCode Generator 和 Crankshaft:

图片来源:Benedikt Meurer

这一新管道大大降低了V8团队的技术负担,并且实现了以前不可能实现的大量优化。

阅读更多关于 TurboFan and Ignition和TurboFan Inlining Heuristics

npm 升级到 5.0.0

新的 Node.js 8 版本还附带了npm 5 - 最新版本的npm CLI。

npm 新版本的亮点:

•一种新的标准化锁定文件的功能,用于跨套件管理器兼容性(package-lock.json),一种新的格式和 shrinkwrap 语义化。

•--save 不再需要,默认情况下将保存所有安装
•node-gyp 现在支持 Windows(node-gyp.cmd)

•现在将包括sha512和sha1校验。

Node.js 8中的其他显着变化

Buffer
•Buffer 方法现在接受 Uint8Array 作为输入

Child Process

•优化参数和 kill 信号校验

•Child Process 方法接受 Uint8Array 作为输入

Console
•使用 console 发出的错误事件现在被限制

Domains
•Native Promise 实例现在是 Domain 敏感的

File System

•实用工具类fs.SyncWriteStream已被弃用

•fs.read()字符串接口已被删除

HTTP

•传出的 Cookie 头连接成一个字符串

•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,它目前较难掌握,文档还在不断改进状态。我们将尽快开始播放新版本,并尽快让您对这些功能的更详细的说明。

Node.js 8 中的重要新特性的更多相关文章

  1. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. node.js三个步骤实现一个服务器及Express包使用

    这篇文章主要介绍了node.js三个步骤实现一个服务器及Express包使用,文章通过新建一个文件展开全文内容,具有一定的参考价值,需要的小伙伴可以参考一下

  3. Node.js调试技术总结分享

    Node.js是一个可以快速构建网络服务及应用的平台。该平台的构建是基于Chrome's JavaScript runtime,也就是说,实际上它是对Google V8引擎(应用于Google Chrome浏览器)进行了封装。 今天介绍Node.js调式目前有几种技术,需要的朋友可以参考下。

  4. node.js实现http服务器与浏览器之间的内容缓存操作示例

    这篇文章主要介绍了node.js实现http服务器与浏览器之间的内容缓存操作,结合实例形式分析了node.js http服务器与浏览器之间的内容缓存原理与具体实现技巧,需要的朋友可以参考下

  5. 教你如何使用node.js制作代理服务器

    本文介绍了如何使用node.js制作代理服务器,图文并茂,十分的详细,代码很简洁易懂,这里推荐给大家。

  6. node.js中的fs.openSync方法使用说明

    这篇文章主要介绍了node.js中的fs.openSync方法使用说明,本文介绍了fs.openSync方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下

  7. Node.js+ELK日志规范的实现

    这篇文章主要介绍了Node.js+ELK日志规范的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  8. node.js爬虫框架node-crawler初体验

    这篇文章主要介绍了node.js爬虫框架node-crawler的相关资料,帮助大家利用node.js进行爬虫,感兴趣的朋友可以了解下

  9. node.js中的fs.existsSync方法使用说明

    这篇文章主要介绍了node.js中的fs.existsSync方法使用说明,本文介绍了fs.existsSync方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下

  10. 说说如何利用 Node.js 代理解决跨域问题

    这篇文章主要介绍了Node.js代理解决跨域问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

随机推荐

  1. Error: Cannot find module ‘node:util‘问题解决

    控制台 安装 Vue-Cli 最后一步出现 Error: Cannot find module 'node:util' 问题解决方案1.问题C:\Windows\System32>cnpm install -g @vue/cli@4.0.3internal/modules/cjs/loader.js:638 throw err; &nbs

  2. yarn的安装和使用(全网最详细)

    一、yarn的简介:Yarn是facebook发布的一款取代npm的包管理工具。二、yarn的特点:速度超快。Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。超级安全。在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。超级可靠。使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。三、y

  3. 前端环境 本机可切换node多版本 问题源头是node使用的高版本

    前言投降投降 重头再来 重装环境 也就分分钟的事 偏要折腾 这下好了1天了 还没折腾出来问题的源头是node 使用的高版本 方案那就用 本机可切换多版本最终问题是因为nodejs的版本太高,导致的node-sass不兼容问题,我的node是v16.14.0的版本,项目中用了"node-sass": "^4.7.2"版本,无法匹配当前的node版本根据文章的提

  4. nodejs模块学习之connect解析

    这篇文章主要介绍了nodejs模块学习之connect解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. nodejs npm package.json中文文档

    这篇文章主要介绍了nodejs npm package.json中文文档,本文档中描述的很多行为都受npm-config(7)的影响,需要的朋友可以参考下

  6. 详解koa2学习中使用 async 、await、promise解决异步的问题

    这篇文章主要介绍了详解koa2学习中使用 async 、await、promise解决异步的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. Node.js编写爬虫的基本思路及抓取百度图片的实例分享

    这篇文章主要介绍了Node.js编写爬虫的基本思路及抓取百度图片的实例分享,其中作者提到了需要特别注意GBK转码的转码问题,需要的朋友可以参考下

  8. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. node.js三个步骤实现一个服务器及Express包使用

    这篇文章主要介绍了node.js三个步骤实现一个服务器及Express包使用,文章通过新建一个文件展开全文内容,具有一定的参考价值,需要的小伙伴可以参考一下

  10. node下使用UglifyJS压缩合并JS文件的方法

    下面小编就为大家分享一篇node下使用UglifyJS压缩合并JS文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

返回
顶部