Node.js v7.6 发布要点说明

Posted Node全栈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node.js v7.6 发布要点说明相关的知识,希望对你有一定的参考价值。

Node.js v7.6 发布说明

要点

  • 集成v8 5.5版本

  • 支持async函数,再也不用加flag才能运行了

  • 性能提升,尤其是内存,最多35%的提升

  • 在v8 5.7对async函数的优化会有4倍以上的提高

Node.js v7.6发布说明

This release contains v8 5.5

最重要的一条就是它包含了v8 5.5版本,也就是说v8 5.5支持的async函数和性能优化,在Node.js平台上可以受益。

其他内容,变化不大

  • deps:

    • update V8 to 5.5 (Michaël Zasso) 

    • upgrade libuv to 1.11.0 (cjihrig) 

    • add node-inspect 1.10.4 (Jan Krems) 

    • upgrade zlib to 1.2.11 (Sam Roberts) 

  • lib: build node inspect into node (Anna Henningsen) 

  • crypto: Remove expired certs from CNNIC whitelist (Shigeki Ohtsu) 

  • inspector: add --inspect-brk (Josh Gavant) 

  • fs: allow WHATWG URL objects as paths (James M Snell) 

  • src: support UTF-8 in compiled-in JS source files (Ben Noordhuis) 

  • url: extend url.format to support WHATWG URL (James M Snell) 

v8 5.5版本

其实v8 5.5版本在去年10月份就发布了,只是Node.js一直没有升级上去,终于在Node.js v7.6里落地了,对于期望async函数和Koa 2.0正式版本的网友来说是件大事儿。

Async 函数

在v5.5版本中, V8 搭载了 javascript ES2017 里的async 函数, 它让编写和创建Promise更加简单。 使用async函数, 可以通过输入await关键字来等待Promise的resolve,并且如果返回值是可以同步的就会直接赋值-不在需要callback了。可以翻墙看看这篇

下面给出一个例子,通过fetch一个URL返回response文本,这是一个典型的异步的,基于Promise风格的写法。

function logFetch(url) {  return fetch(url)    .then(response => response.text())    .then(text => {      console.log(text);    }).catch(err => {      console.error('fetch failed', err);    });
}

下面给出使用async函数重写的代码,移除了callback:

async function logFetch(url) {  try {    const response = await fetch(url);    console.log(await response.text());  } catch (err) {    console.log('fetch failed', err);  }
}

如果对Node.js异步流程不熟悉,可以看看

性能提升

V8 5.5 说明了在内存上提升的几个关键点。

内存消耗是JavaScript虚拟机性能衡量中的一个重要的维度,过去的几个发布中,V8小组通过分析并且为很多被认为是现代web开发模式代表的网站显著的减少了内存。V8 5.5 在内存较小的设备上减少的Chrome内存全部消耗多支35%(说明:和Chrome 53里的 V8 5.3比较的), 较少主要是在V8堆大小和zone memory上使用。其他设备部分也得益于zone memory减少。具体翻墙请看http://v8project.blogspot.jp/2016/10/fall-cleaning-optimizing-v8-memory.html

堆大小比较结果

zone memory比较结果

Node.js v7.6 发布要点说明

据菜神说

  • v7.6 v8 做了挺多优化的,try-catch 的 disabled optimization 标记都没有了

  • 像这种。[disabled optimization for 0xbac086743c9 <SharedFunctionInfo resolvePromise>, reason: TryCatchStatement]

  • 配了台 hackintosh,i7 7700k,测试跑分刚刚的,以前一个 npm test 要 7s,现在 1s


然而v8在2017年2月份已经发布5.7了, async/await 能有个4倍左右的提升,V8团队还是非常给力的。毫无疑问,在性能和生态环境上都非常棒,Node.js未来发展会越来越好

详见

如果想深入沟通,获取最新消息,欢迎参加狼叔的小密圈

如果想参与评论,请点击阅读原文链接,进入国内最专业的cnode论坛

你身边如果有朋友对Node.js或全栈感兴趣,可以转发给他们看看哦,O(∩_∩)O先谢过



以上是关于Node.js v7.6 发布要点说明的主要内容,如果未能解决你的问题,请参考以下文章

安装Node.js和npm

koa2-1

澄清 node.js + promises 片段

node JS 微信开发

《请叫我Node.js 8》兼发布说明

vscode代码片段建议bug