前言

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

该版本带来了诸如:

  • V8 更新带来好多不错的特性。
  • HTTP 解析速度提升。
  • 启动速度大幅提升。
  • 更好的诊断报告和堆分析工具。
  • ESM 模块更新。

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

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

LTS vs Current

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

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

快速体验

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

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

V8 更新到 7.4

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

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

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

class IncreasingCounter {
#count = ; 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 占用等等问题。详见 这篇文章

Heap Dump

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

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

同时,由于上述提到的 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-gyp 的一些原生模块会编译失败:

nunjucks@3.2. › chokidar@2.1. › fsevents@^1.2. optional error: Error: Run "sh -c node install" error, exit code
at ChildProcess.<anonymous> (/Users/tz/.npm-global/lib/node_modules/tnpm/node_modules/_runscript@1.3.@runscript/index.js::)
at ChildProcess.emit (events.js::)
at maybeClose (internal/child_process.js::)
at Process.ChildProcess._handle.onexit (internal/child_process.js::)

本文摘抄至:Egg.js 团队  https://www.yuque.com/egg/nodejs/nodejs-12

若有侵权及时联系。

Node 12 值得关注的新特性的更多相关文章

  1. Atitit python3.0 3.3 3.5 3.6 新特性 Python2.7新特性1Python 3_x 新特性1python3.4新特性1python3.5新特性1值得关注的新特性1Pyth

    Atitit python3.0 3.3 3.5 3.6 新特性 Python2.7新特性1 Python 3_x 新特性1 python3.4新特性1 python3.5新特性1 值得关注的新特性1 ...

  2. C# 8.0的三个值得关注的新特性

    本文翻译自:https://dzone.com/articles/3-new-c-8-features-we-are-excited-about 转载请注明出自:葡萄城官网,葡萄城为开发者提供专业的开 ...

  3. java 11 值得关注的新特性

    JEP 181: Nest-Based Access Control 基于嵌套的访问控制 JEP 309: Dynamic Class-File Constants 动态类文件 JEP 315: Im ...

  4. Java1.0-1.12各个版本的新特性

    JDK Version 1.0 1996-01-23 Oak(橡树) 初代版本,伟大的一个里程碑,但是是纯解释运行,使用外挂JIT,性能比较差,运行速度慢. JDK Version 1.1 1997- ...

  5. Swift 2.0初探:值得注意的新特性

    转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上A ...

  6. PHP 7 值得期待的新特性(下)

    这是我们期待已久的 PHP 7 系列文章的第二篇.点此阅读 第一篇本文系 OneAPM 工程师编译整理. 也许你已经知道,重头戏 PHP 7 的发布将在今年到来!现在,让我们来了解一下,新版本有哪些新 ...

  7. PHP 7 值得期待的新特性(上)

    这是我们期待已久的 PHP 7 系列文章的第一篇. 或许你已经知道了,我在 PHP 5.0.0 时间轴 提的 RFC (Request For Comments)通过了, PHP 7 成为 PHP 下 ...

  8. odi 12.2.1.1新特性

    ODI 12.2.1.1现在已经发布,也可以OTN上下载,主要变化: Hyperion Essbase and Hyperion Planning 知识模块 Hyperion Essbase and ...

  9. C++17中那些值得关注的特性(上)

    C++17标准在2017上半年已经讨论确定,正在形成ISO标准文档,今年晚些时候会正式发布.本文将介绍最新标准中值得开发者关注的新特新和基本用法. 总的来说C++17相比C++11的新特性来说新特性不 ...

随机推荐

  1. linux运维、架构之路-tomcat日志切割工具 logrotate

    一.Logrotate简介 1.Logrotate实际就是对日志进行切割的小工具,他通过让用户来配置规则的方式,检测和处理日志文件.配合Cron可让处理定时化:2.Logrotate预制了大量判断条件 ...

  2. R 保存图片——tiff

    tiff(filename = "c:\\aaa.tiff", res = 800, pointsize = 2) plot(1:100) dev.off() tiff(file= ...

  3. E. Natasha, Sasha and the Prefix Sums

    http://codeforces.com/contest/1204/problem/E 给定n个 1 m个 -1的全排 求所有排列的$f(a) = max(0,max_{1≤i≤l} \sum_{j ...

  4. WIN7系统JavaEE(java+tomcat7+Eclipse)环境配置

    https://jingyan.baidu.com/article/3a2f7c2e62d25e26afd611fa.html WIN7系统JavaEE(java+tomcat7+Eclipse)环境 ...

  5. h5表单属性的介绍

    表单 type属性对应的属性值 text:代表文本框 案例:<input type="text" /> password:代表密码框 radio:单选框 checkbo ...

  6. 模拟赛DAY 2 T2不老梦

    [题目背景] 于万人中万幸得以相逢,刹那间澈净明通. 成为我所向披靡的勇气和惶恐,裂山海,堕苍穹. 爱若执炬迎风,炽烈而哀恸,诸般滋味皆在其中. 韶华宛转吟诵,苍凉的光荣,急景凋年深情难共. ——银临 ...

  7. 运行jar包shell脚本

    #!/bin/sh #该文件必须放在jar包的目录下,因为是以相对路径来运行的.不放jar包目录的话,可以直接在jar_name参数写绝对路径 #start 设置三个参数 #环境 profile=te ...

  8. Flask框架【七】—session组件详解

    一.flask session简介 flask中session组件可分为内置的session组件还有第三方flask-session组件,内置的session组件缺点: 功能单一 session是保存 ...

  9. 操作Redis--hash/key-value

    redis也是一个数据库,它的存储以key-value的方式存放,比如: a.关系型数据库 比如: mysql.oracle.sql server.db2.sqlite数据库,为关系型数据库 数据通过 ...

  10. 佳能mp288拆解步骤--绝对原创

    http://itbbs.pconline.com.cn/office/50663206.html 佳能mp288拆解步骤--绝对原创 gotobug Lv1太平洋舰队新兵 楼主 2013-10-13 ...