2019独角兽企业重金招聘Python工程师标准>>>

5月30日12点,Node.js 8正式发布了,这个版本具有一系列新功能和性能改进,并且这些功能和改进将获得长期支持(LTS)。

下面就来介绍Node.js 8版本中最重要的功能和修复。

新版本的代号是Carbon。Node.js 8将从2017年10月起,正式成为当前的LTS版本,并持续到2019年12月31日。这也意味着Node.js 6版本将在2018年4月进入到维护模式,并在2019年4月结束维护支持。

下载Node.js 8版本:https://nodejs.org/download/rc/v8.0.0-rc.2/

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下一步要做什么

Node.js 8版本令我们兴奋,因为它包含了很多有趣的提升,例如Async Hooks API,这些API在当前的文档状态是很难掌握的。我们将尽快开始使用新版本,并尽快提供给用户新功能的更详细说明。

在众多支持node.js的产品中,值得一提的是Wijmo,这是一款为企业应用程序开发而推出的一系列包含 HTML5 和 JavaScript 的开发控件集。无论你的应用程序是移动端、PC端、还是必须要支持IE6,Wijmo Enterprise 均能满足需求。

原文链接:https://blog.risingstack.com/important-features-fixes-node-js-version-8/

转载请注明出自:葡萄城控件

转载于:https://my.oschina.net/powertoolsteam/blog/913075

Node.js 8有哪些重要功能和修复?相关推荐

  1. 【全网唯一】全网唯一能够跑通的,跑不通你来找我~用node.js完成微信支付下单功能,且只需要一个文件wxpay.js就解决业务流程的node.js程序

    先吐为敬! 最近心血来潮研究nodejs如何完成微信支付功能,结果网上一搜索,一大堆"代码拷贝党"."留一手"."缺斤少两"."不 ...

  2. 基于node.js+MongoDB+elementui的分页功能更新优化

    一.准备分页组件. 1.1分页组件 src-->components-->Pagination-->index.vue <template><div class=& ...

  3. Node.js新手教程——怎样实现文件上传功能

    作者:zhanhailiang 日期:2014-11-16 本文将介绍怎样使用Node.js实现文件上传功能. 1. 初始化项目信息:npm init [root@~/wade/nodejs/node ...

  4. 在春节来临之际使用 javascript + Node.js 实现邮件传输功能给远方的朋友发封邮件拜个早年

    目录: 一.引言 二.Nodemailer 模块 1.简介 2.特点 3.使用 三.可重用的邮件发送模块(以服务器挂载路由函数为例) 四.总结 一.引言 电子邮件,是互联网应用最广泛使用的服务之一,通 ...

  5. node JS獲取GPS_Node.js 14 正式发布:V8 引擎升级,新增异步本地存储 API

    Node.js 14 版本于近日正式发布, 此版本包含的亮点如下: 对诊断功能的改进 升级 v8 引擎 新增实验性的异步本地存储 API 强化流 API 移除实验性模块中的警告 移除一部分早期版本中废 ...

  6. nodejs mysql备份_node.js实现备份mysql数据库功能

    node.js实现备份mysql数据库功能 发布时间:2019-10-09编辑:星王 原创 阅读(1697) 在node.js上实现备份mysql数据库到指定文件夹内,并且能够同步执行操作,首要是对m ...

  7. node 大写_大写Node.js模块

    node 大写 Today, let's see a third party module that helps us in working with upper-case letters witho ...

  8. js数组截取前5个_想用好 Node.js?这 5 个经典国产项目值得细品

    凭借着高并发性能优秀.异步事件驱动.入门简单等优势,Node.js 受到了不少开发者们的青睐.但不得不承认的是,如果用不好 Node.js,它的坑就会非常多,为了帮助各位 Node.js 的开发者们更 ...

  9. 如何使用async / await和Firebase数据库编写漂亮的Node.js API

    by Paul Breslin 保罗·布雷斯林(Pau​​l Breslin) 如何使用async / await和Firebase数据库编写漂亮的Node.js API (How to write ...

最新文章

  1. 回顾Node文件路径
  2. Sublime Text开发Quick-Cocos2d-x环境搭建(Mac)
  3. python截取视频图像_python工具-将视频按帧截取图片(附代码)
  4. LeetCode 第 20 场双周赛(294 / 1541,前19.07%,第1次全部通过)
  5. 姐妹花考上川大本硕博连读,网红兄弟一起上清华
  6. Android学习小Demo(10)ToDoList的加强版
  7. Halcon Blob分析(二值化图像分割)
  8. 技术栈是什么_我从找不到实习到拿大厂offer经历了什么?
  9. java 欧拉_项目欧拉#6 Java协助
  10. Oracle-第一篇一些调优技巧
  11. Atitit 摄像头与主机连接方式大总结
  12. OOP思想与Java实现
  13. Windows10 mysql解决MySQL服务无法启动 系统出错 发生系统错误 1067
  14. 不要女程序员,公司都爱招男性程序员,这是为什么?
  15. 《前端单位和网络地址》随手学习笔记
  16. 计算机三维设计ppt,1 三维建模技术发展史.ppt
  17. 学位计算机考试成绩怎么查询时间,湖北省自考00019计算机实践考试成绩在哪里查询...
  18. 使用UltraISO软碟通制作Win10PE启动U盘
  19. 2019肖秀荣考研政治3件套
  20. python学习笔记(一)PIP

热门文章

  1. 神经网络模式识别matlab,基于matlab仿真的神经网络模式识别
  2. 安可与普通测评的区别_PRINCE王子TeXtreme Tour 100系列网球拍测评(文末有福利)
  3. excel两个表格数据对比_Excel表格怎么防止看错数据?阅读模式了解一下
  4. 使用opencv训练cascade分类器进行目标检测
  5. 【GAN优化外篇】详解生成模型VAE的数学原理
  6. 【GAN优化】GAN优化专栏上线,首谈生成模型与GAN基础
  7. 【模型解读】浅析RNN到LSTM
  8. 全球及中国胶合板行业产量规模与营运能力研究报告2022版
  9. 全球及中国热障涂层材料行业趋势研究及应用前景分析报告2021-2027年
  10. xMind思维导图软件