源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Node.js 8 中的重要新特性

  • 时间:2021-08-13 19:25 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Node.js 8 中的重要新特性
随着 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 月废弃。 你可以在这里获取 [url=https://nodejs.org/download/rc/v8.0.0-rc.2/]8.0 release文档[/url] [b]Async Hooks API 简介[/b] 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的信息,或者这里查看当前的进度。 [b]N-API 简介[/b] 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 编译管道的示例图 [img]http://files.jb51.net/file_images/article/201706/201762891007291.png?201752891118[/img] 图片来源:Benedikt Meurer 这个管道的最大问题是新的语言功能必须在管道的不同部分实现,增加了大量额外的开发工作。 这是简化的管道外观,没有 FullCode Generator 和 Crankshaft: [img]http://files.jb51.net/file_images/article/201706/201762891223362.png?201752891240[/img] 图片来源: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校验。 [b]Node.js 8中的其他显着变化[/b] Buffer •Buffer 方法现在接受 Uint8Array 作为输入 [b]Child Process[/b] •优化参数和 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,它目前较难掌握,文档还在不断改进状态。我们将尽快开始播放新版本,并尽快让您对这些功能的更详细的说明。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部