Node.js 8有哪些重要功能和修复?
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有哪些重要功能和修复?相关推荐
- 【全网唯一】全网唯一能够跑通的,跑不通你来找我~用node.js完成微信支付下单功能,且只需要一个文件wxpay.js就解决业务流程的node.js程序
先吐为敬! 最近心血来潮研究nodejs如何完成微信支付功能,结果网上一搜索,一大堆"代码拷贝党"."留一手"."缺斤少两"."不 ...
- 基于node.js+MongoDB+elementui的分页功能更新优化
一.准备分页组件. 1.1分页组件 src-->components-->Pagination-->index.vue <template><div class=& ...
- Node.js新手教程——怎样实现文件上传功能
作者:zhanhailiang 日期:2014-11-16 本文将介绍怎样使用Node.js实现文件上传功能. 1. 初始化项目信息:npm init [root@~/wade/nodejs/node ...
- 在春节来临之际使用 javascript + Node.js 实现邮件传输功能给远方的朋友发封邮件拜个早年
目录: 一.引言 二.Nodemailer 模块 1.简介 2.特点 3.使用 三.可重用的邮件发送模块(以服务器挂载路由函数为例) 四.总结 一.引言 电子邮件,是互联网应用最广泛使用的服务之一,通 ...
- node JS獲取GPS_Node.js 14 正式发布:V8 引擎升级,新增异步本地存储 API
Node.js 14 版本于近日正式发布, 此版本包含的亮点如下: 对诊断功能的改进 升级 v8 引擎 新增实验性的异步本地存储 API 强化流 API 移除实验性模块中的警告 移除一部分早期版本中废 ...
- nodejs mysql备份_node.js实现备份mysql数据库功能
node.js实现备份mysql数据库功能 发布时间:2019-10-09编辑:星王 原创 阅读(1697) 在node.js上实现备份mysql数据库到指定文件夹内,并且能够同步执行操作,首要是对m ...
- node 大写_大写Node.js模块
node 大写 Today, let's see a third party module that helps us in working with upper-case letters witho ...
- js数组截取前5个_想用好 Node.js?这 5 个经典国产项目值得细品
凭借着高并发性能优秀.异步事件驱动.入门简单等优势,Node.js 受到了不少开发者们的青睐.但不得不承认的是,如果用不好 Node.js,它的坑就会非常多,为了帮助各位 Node.js 的开发者们更 ...
- 如何使用async / await和Firebase数据库编写漂亮的Node.js API
by Paul Breslin 保罗·布雷斯林(Paul Breslin) 如何使用async / await和Firebase数据库编写漂亮的Node.js API (How to write ...
最新文章
- 回顾Node文件路径
- Sublime Text开发Quick-Cocos2d-x环境搭建(Mac)
- python截取视频图像_python工具-将视频按帧截取图片(附代码)
- LeetCode 第 20 场双周赛(294 / 1541,前19.07%,第1次全部通过)
- 姐妹花考上川大本硕博连读,网红兄弟一起上清华
- Android学习小Demo(10)ToDoList的加强版
- Halcon Blob分析(二值化图像分割)
- 技术栈是什么_我从找不到实习到拿大厂offer经历了什么?
- java 欧拉_项目欧拉#6 Java协助
- Oracle-第一篇一些调优技巧
- Atitit 摄像头与主机连接方式大总结
- OOP思想与Java实现
- Windows10 mysql解决MySQL服务无法启动 系统出错 发生系统错误 1067
- 不要女程序员,公司都爱招男性程序员,这是为什么?
- 《前端单位和网络地址》随手学习笔记
- 计算机三维设计ppt,1 三维建模技术发展史.ppt
- 学位计算机考试成绩怎么查询时间,湖北省自考00019计算机实践考试成绩在哪里查询...
- 使用UltraISO软碟通制作Win10PE启动U盘
- 2019肖秀荣考研政治3件套
- python学习笔记(一)PIP
热门文章
- 神经网络模式识别matlab,基于matlab仿真的神经网络模式识别
- 安可与普通测评的区别_PRINCE王子TeXtreme Tour 100系列网球拍测评(文末有福利)
- excel两个表格数据对比_Excel表格怎么防止看错数据?阅读模式了解一下
- 使用opencv训练cascade分类器进行目标检测
- 【GAN优化外篇】详解生成模型VAE的数学原理
- 【GAN优化】GAN优化专栏上线,首谈生成模型与GAN基础
- 【模型解读】浅析RNN到LSTM
- 全球及中国胶合板行业产量规模与营运能力研究报告2022版
- 全球及中国热障涂层材料行业趋势研究及应用前景分析报告2021-2027年
- xMind思维导图软件