Node.js v8.0.0正式发布!看看带来了哪些主要新特性

发布时间 - 2026-01-11 01:38:43    点击率:

前言

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# nodejs  # v8.0  # 8.0  # 通过V8源码看一个关于JS数组排序的诡异问题  # CentOS 安装NodeJS V8.0.0的方法  # 使用PyV8在Python爬虫中执行js代码  # CentOS安装php v8js教程  # 通过循环优化 JavaScript 程序  # js尾调用优化的实现  # JavaScript深入V8引擎以及编写优化代码的5个技巧  # 开发人员  # 句柄  # 带来了  # 文档  # 就可以  # 都是  # 这一  # 包含了  # 首次  # 将在  # 还会  # 会在  # 等方面  # 这是一个  # 微软  # 可以通过  # 可以使用  # 升级到  # 这篇文章  # 这套 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 三星网站视频制作教程下载,三星w23网页如何全屏?  node.js报错:Cannot find module 'ejs'的解决办法  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  如何用5美元大硬盘VPS安全高效搭建个人网站?  Laravel如何使用withoutEvents方法临时禁用模型事件  zabbix利用python脚本发送报警邮件的方法  如何快速启动建站代理加盟业务?  ,南京靠谱的征婚网站?  Laravel如何处理文件下载请求?(Response示例)  如何在Windows 2008云服务器安全搭建网站?  香港服务器如何优化才能显著提升网站加载速度?  如何快速搭建支持数据库操作的智能建站平台?  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  如何在新浪SAE免费搭建个人博客?  Laravel如何实现一对一模型关联?(Eloquent示例)  JavaScript模板引擎Template.js使用详解  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  Laravel如何自定义分页视图?(Pagination示例)  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  WordPress 子目录安装中正确处理脚本路径的完整指南  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  如何用PHP快速搭建CMS系统?  php json中文编码为null的解决办法  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  如何在香港免费服务器上快速搭建网站?  太平洋网站制作公司,网络用语太平洋是什么意思?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  如何用wdcp快速搭建高效网站?  深入理解Android中的xmlns:tools属性  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  MySQL查询结果复制到新表的方法(更新、插入)  如何注册花生壳免费域名并搭建个人网站?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  🚀拖拽式CMS建站能否实现高效与个性化并存?  北京专业网站制作设计师招聘,北京白云观官方网站?  清除minerd进程的简单方法  在centOS 7安装mysql 5.7的详细教程  详解Android中Activity的四大启动模式实验简述  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  简单实现Android文件上传