在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

Node.js v8.0.0 带来了哪些主要新特性

  • 2017-06-01
  • 本文字数:1190 字

    阅读完需:约 4 分钟

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 等方面的改进。

2017-06-01 18:504642
用户头像

发布了 322 篇内容, 共 160.4 次阅读, 收获喜欢 148 次。

关注

评论

发布
暂无评论
发现更多内容

QGIS开发的技术难点

北京木奇移动技术有限公司

软件外包公司 GIS开发 QGIS开发

windows查看端口占用情况

端口

【纯干货】手把手教你测试1688代采下单系统(附真实操作案例)

代码忍者

1688代采集运系统

5次登上HackerNews首页,我们怎么做开源运营

小猿姐

开源 Kubernetes 云原生

软件等保测评相关问题汇总

行云管家

网络安全 等保 等保测评

LambdaQueryWrapper的使用

java 技术提升

面对大量指标、模型,如何在研发度量中兼顾易用性?

思码逸研发效能

研发管理 研发效能 效能管理 研发效能度量 思码逸

2025年福建企业采购堡垒机选哪家?需要重点考虑哪些因素?

行云管家

网络安全 堡垒机 福建

CST均匀头模型和天线SAR比吸收率仿真案例

思茂信息

cst cst电磁仿真 CST软件

初创公司使用 AI “码农” Devin 一个月的体验

Baihai IDP

程序员 AI LLM AI Agents Devin

QCon 是一个在软件开发领域具有广泛影响力的技术盛会,以下为你详细介绍:

Chihiro

Qcon

持续交付的优势有哪些

Chihiro

#DevOps

NLLB 与 ChatGPT 双向优化:探索翻译模型与语言模型在小语种应用的融合策略

vivo互联网技术

人工智能 大语言模型 LORA微调

云上玩转DeepSeek系列之二:PAI+DeepSeek,打造智能问答助手

阿里云大数据AI技术

人工智能 最佳实践 rag PAI DeepSeek

Idea自动生成注释

IDEA

关于 “DevOps 实践的深入剖析:从持续集成到持续交付” 相关内容的详细

Chihiro

#DevOps

面向 Data+AI 的新一代智能数仓平台

阿里云大数据AI技术

大数据 Serverless 数据仓库 SaaS MaxCompute

火语言RPA--配置文件读取

火语言RPA

Dbeaver迁移配置

DeepSeek与Playwright结合,利用AI提升自动化测试脚本生成与覆盖率优化

测试人

人工智能

Squaretest自动生成单元测试

squaretest

支付宝 IoT 设备入门宝典(上)设备管理篇

盐焗代码虾

支付宝 物联网 IoT 设备管理 应用分发

适合小型企业的库存管理工具推荐(含免费、开源)

NocoBase

开源 低代码 无代码 库存管理 小企业发展

DevOps如何实现持续交付

Chihiro

#DevOps

NotePad++使用批量替换修改文件格式

notepad

如何在`created`生命周期钩子中使用`sessionStorage`实现缓存

Chihiro

缓存 Vue 3

从文心一言与ChatGPT同时免费,读懂全球AI新周期

脑极体

AI

QGIS 的性能优化

北京木奇移动技术有限公司

软件外包公司 GIS开发 QGIS开发

Node.js v8.0.0 带来了哪些主要新特性_架构/框架_薛命灯_InfoQ精选文章