千家信息网

Node.js 8有哪些重要功能和修复

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Node.js 8有哪些重要功能和修复,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Async Hooks API介绍Async Hoo
千家信息网最后更新 2026年11月01日Node.js 8有哪些重要功能和修复

Node.js 8有哪些重要功能和修复,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

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版本的亮点:

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

  • --save 已经不再需要了,因为所有的安装将默认保存

  • node-gyp现在支持Windows的node-gyp.cmd

  • 新的发布版本将会包括sha512和sha1校验

Node.js 8版本中的其它显著改变

Buffer

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

Child Process

  • Argument和Kill信号验证得到改善

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

Console

使用控制台方法时,错误事件发送现在受到了抑制

Domains

Native Promise实例现在是域感知的

文件系统

  • 实用程序类fs.SyncWriteStream已被弃用

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

HTTP

  • 溢出的Cookie headers会被连接成一个字符串

  • 该httpResponse.writeHeader( )方法已被弃用

Stream

Stream现在支持destroy( )和_destroy( ) API

TLS

该rejectUnauthorized选项现在默认为true

URL

WHATWG URL的实现,现在是Node.js API完全支持的

看完上述内容,你们掌握Node.js 8有哪些重要功能和修复的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

版本 方法 功能 更多 管道 问题 不同 周期 团队 生命 事件 信息 函数 对象 程序 结果 工作 支持 编译 重要 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网产品 科技金融是不是互联网金融 盈实互联网科技 麻工互联网科技 壹账通互联网科技 智慧科技互联网 奔汉互联网科技 哈尔滨新华互联网科技 深圳卡尔迅互联网科技有限公司怎么样 成都互联网科技公司100强 彤创互联网科技有限公司 呼和浩特新华互联网科技学院 元气玛特互联网科技公司是外包吗 上海钢联属于互联网科技股吗 电子商务与互联网科技的关系 福州德业互联网科技 长沙渺峰互联网科技有限公司 陕西彩京云互联网科技有限公司 华人运通互联网科技公司 前海云享互联网科技 花魁咖啡 广东猪兼强互联网科技有限公司 金融科技与互联网金融相同和不同 苏州铭阳互联网科技有限公司 江苏互联网智能科技产品出厂价 马化腾互联网科技教学 互联网科技和医药行业 重庆科技产业互联网有哪些 优雇互联网科技有限公司 瑞安市蟠桃会互联网科技有限公司
0