Node 12 值得关注的新特性

2019 年 5 月 9 日 前端大全

(给前端大全加星标,提升前端技能


作者:Egg.js 团队

https://www.yuque.com/egg/nodejs/nodejs-12

前言

时隔一年,Node.js 12 如约而至,正式发布第一个 Current 版本。

该版本带来了诸如:

  • V8 更新带来好多不错的特性。

  • HTTP 解析速度提升。

  • 启动速度大幅提升。

  • 更好的诊断报告和堆分析工具。

  • ESM 模块更新。


相关资料:

  • https://medium.com/@nodejs/introducing-node-js-12-76c41a1b3f3f(原文地址)

  • 相关文章:Node.js 10 值得关注的新特性

LTS 是什么?


如果你不了解 Node.js 的 Long Term Support 发布策略的话,一定要看看 https://github.com/nodejs/Release 。

就目前而言,Node.js 6.x 和 8.x 将在 2019 年末结束 LTS 的支持,大家尽快升级到 10.x 吧。

快速体验

$ nvs add node/12
$ nvs use 12
$ node -v
v12.0.0

具体参考这篇文章:科普文:使用 nvs 管理本地 Node.js 版本

V8 更新到 7.4

大部分情况下,我们不用去考虑性能问题,坐等 V8 版本更新就好了。(大雾)


本次版本更新,也带来了好几个不错的特性:

  • 异步堆栈跟踪

    https://v8.dev/blog/v8-release-72#async-stack-traces

  • 参数调用不匹配时的调用速度优化


    https://v8.dev/blog/v8-release-74#faster-calls-with-arguments-mismatch

  • 更快的 await

    https://v8.dev/blog/v8-release-73#faster-await

  • 更快的 JavaScript 解析速度

    https://v8.dev/blog/v8-release-72#javascript-parsing


同时,跑了下我们 Egg 的一些内部测试,发现序列化有 10~20% 的性能提升,恐怖如斯!

ECMAScript 新特性支持

随着 V8 的更新,很多 ES 的新规范也落地了。支持列表参见:https://node.green/

如奇丑无比的 Private Class Fields 也能用了:

class IncreasingCounter {
  #count = 0;

  get value() {
    console.log('Getting the current value!');
    return this.#count;
  }
  increment() {
    this.#count++;
  }
}

HTTP 解析速度提升

默认的 HTTP 解析器切换为 llhttp ,性能提升恐怖如斯:

点评:恐怖如斯。

启动速度提升

通过 v8 code cache 的支持,在构建时提前为内置库生成代码缓存,从而提升 30% 的启动耗时。
同时,通过重用主进程缓存,Workers Threads 的启动速度提升了 60% 。

点评:恐怖如斯。

Workers Threads

在 10.x 已经引入的 Workers Threads 特性,在 12.x 里面默认启用,无需使用 --experimental-worker 开启。同时基于上一条的介绍,启动的速度也得到大幅提升。

相关介绍:https://medium.com/@Trott/using-worker-threads-in-node-js-80494136dbb6

诊断报告

提供了新的实验性功能『诊断报告』,一个非常有用的特性。
可用于帮助分析诸如:崩溃,性能问题,内存泄漏,高 CPU 占用等等问题。详见 这篇文章。

点评:这也是 AliNode 之前的一个卖点之一。

Heap Dump

以前我们分析问题的时候,需要手动安装对应的类库或者使用 AliNode。

在 12.x 里面内置了该功能,详见:

点评:又一个 AliNode 的功能被内置了。但其实影响不大,AliNode 的核心在于分析平台,这块的采集能力,本来他们就打算开源回馈出去的。

同时,由于上述提到的 V8 升级,现在可以按照可用内存动态调整堆大小了。

ESM 模块方案更新

ES6 模块仍然还在实验阶段,不过有了新的方式,具体参见这篇文章。

点评:让子弹再飞一会,该特性真的不是痛点,不急。

其他更新

  • 更好的原生模块支持,N-API 升级为版本 4,并 backport 到 Node.js 8.x 和 10.x。详细参见这篇文章。

  • TLS 升级为 1.3, 增强安全功能。

  • 随着 C++ 编译器的更新,现在要求 GCC 6 和 glibc 2.17 ,对应的操作系统 Win7 和 macOS 10,详细参见这篇文章。 



推荐阅读

(点击标题可跳转阅读)

Node.js 项目拆包工程化

Node 程序 debug 小记

细说后端模板渲染、客户端渲染、node 中间层、服务器端渲染(ssr)



觉得本文对你有帮助?请分享给更多人

关注「前端大全」加星标,提升前端技能

好文章,我在看❤️

登录查看更多
0

相关内容

Node.js 是一个在浏览器外部创建互联网应用程序的框架,它基于 Google 开发的 V8 JavaScript 引擎,轻量,高效,事件驱动,非阻塞I/O,特别适合运行于跨分布式设备的实时数据处理程序。
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【Manning新书】现代Java实战,592页pdf
专知会员服务
99+阅读 · 2020年5月22日
大数据安全技术研究进展
专知会员服务
92+阅读 · 2020年5月2日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
支持多标签页的Windows终端:Fluent 终端
Python程序员
7+阅读 · 2019年4月15日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
Python3.8新特性概览
Python程序员
4+阅读 · 2018年12月8日
Flink 靠什么征服饿了么工程师?
阿里技术
6+阅读 · 2018年8月13日
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python 开源项目 Top30 | 值得收藏
人工智能头条
8+阅读 · 2018年1月19日
tensorflow项目学习路径
数据挖掘入门与实战
22+阅读 · 2017年11月19日
Arxiv
101+阅读 · 2020年3月4日
Arxiv
92+阅读 · 2020年2月28日
Arxiv
20+阅读 · 2019年11月23日
Arxiv
6+阅读 · 2019年4月8日
Embedding Logical Queries on Knowledge Graphs
Arxiv
3+阅读 · 2019年2月19日
Music Transformer
Arxiv
5+阅读 · 2018年12月12日
Arxiv
10+阅读 · 2018年2月4日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【Manning新书】现代Java实战,592页pdf
专知会员服务
99+阅读 · 2020年5月22日
大数据安全技术研究进展
专知会员服务
92+阅读 · 2020年5月2日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
相关资讯
用Now轻松部署无服务器Node应用程序
前端之巅
16+阅读 · 2019年6月19日
支持多标签页的Windows终端:Fluent 终端
Python程序员
7+阅读 · 2019年4月15日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
Python3.8新特性概览
Python程序员
4+阅读 · 2018年12月8日
Flink 靠什么征服饿了么工程师?
阿里技术
6+阅读 · 2018年8月13日
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python 开源项目 Top30 | 值得收藏
人工智能头条
8+阅读 · 2018年1月19日
tensorflow项目学习路径
数据挖掘入门与实战
22+阅读 · 2017年11月19日
相关论文
Arxiv
101+阅读 · 2020年3月4日
Arxiv
92+阅读 · 2020年2月28日
Arxiv
20+阅读 · 2019年11月23日
Arxiv
6+阅读 · 2019年4月8日
Embedding Logical Queries on Knowledge Graphs
Arxiv
3+阅读 · 2019年2月19日
Music Transformer
Arxiv
5+阅读 · 2018年12月12日
Arxiv
10+阅读 · 2018年2月4日
Top
微信扫码咨询专知VIP会员