Node 12 值得关注的新特性
前言
时隔一年,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 值得关注的新特性的更多相关文章
- 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 ...
- C# 8.0的三个值得关注的新特性
本文翻译自:https://dzone.com/articles/3-new-c-8-features-we-are-excited-about 转载请注明出自:葡萄城官网,葡萄城为开发者提供专业的开 ...
- java 11 值得关注的新特性
JEP 181: Nest-Based Access Control 基于嵌套的访问控制 JEP 309: Dynamic Class-File Constants 动态类文件 JEP 315: Im ...
- Java1.0-1.12各个版本的新特性
JDK Version 1.0 1996-01-23 Oak(橡树) 初代版本,伟大的一个里程碑,但是是纯解释运行,使用外挂JIT,性能比较差,运行速度慢. JDK Version 1.1 1997- ...
- Swift 2.0初探:值得注意的新特性
转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度的WWDC大会如期而至,在大会上A ...
- PHP 7 值得期待的新特性(下)
这是我们期待已久的 PHP 7 系列文章的第二篇.点此阅读 第一篇本文系 OneAPM 工程师编译整理. 也许你已经知道,重头戏 PHP 7 的发布将在今年到来!现在,让我们来了解一下,新版本有哪些新 ...
- PHP 7 值得期待的新特性(上)
这是我们期待已久的 PHP 7 系列文章的第一篇. 或许你已经知道了,我在 PHP 5.0.0 时间轴 提的 RFC (Request For Comments)通过了, PHP 7 成为 PHP 下 ...
- odi 12.2.1.1新特性
ODI 12.2.1.1现在已经发布,也可以OTN上下载,主要变化: Hyperion Essbase and Hyperion Planning 知识模块 Hyperion Essbase and ...
- C++17中那些值得关注的特性(上)
C++17标准在2017上半年已经讨论确定,正在形成ISO标准文档,今年晚些时候会正式发布.本文将介绍最新标准中值得开发者关注的新特新和基本用法. 总的来说C++17相比C++11的新特性来说新特性不 ...
随机推荐
- 前端面试题常考&必考之--用jquery写出当前元素的同辈元素的第二个结点的value值
问题:用jquery写出当前元素的同辈元素的第二个结点的value值??? 分析:该题目有一个坑,那就是,如果当前元素没有第二个兄弟结点呢(坑坑坑) 解析: 一般我们可能会这样写: $(this).s ...
- sql2008 误操作还原至指定时间点
--drop database db --创建一个测试库 create database db go --备份一个完整备份文件 backup database db to disk = 'd:\db. ...
- 超赞的Linux软件分享(持续更新)
开发 Android studio - Android 的官方 IDE:Android Studio 提供在各种类型的安卓设备上构建应用最快的工具. Aptana - Aptana Studio 利用 ...
- HDU1232 畅通工程(并查集)
#include<iostream> using namespace std; ]; int findx(int x) { while(num[x]!=x)x=num[x]; return ...
- 解决RHEL6 vncserver 启动 could not open default font 'fixed'错误.
https://blog.csdn.net/silencegll/article/details/51320629
- React-Native 之 GD (九)POST 网络请求封装
1.POST /** * * POST请求 * * @param url * @param params {}包装 * @param headers * * @return {Promise} * * ...
- duliu题之狼抓兔子题解
拖了将近5天的正解和AC.........emmmmm........... 事实告诉我们这种毒瘤题一定要建双向边(用了不知道多少个小时质疑建边的人欲哭无泪) 心态爆炸的传送 题了个面 这是个求最小割 ...
- 测开之路一百零七:bootstrap排版
引入bootstrap和jquery 标题 对齐 正文强调 引言 <!DOCTYPE html><html lang="en"><head> & ...
- pthon之mock应用
研发过程中常见分工合作开发接口,但互相之间接口有依赖,这时候便可以使用mock 目录 1.安装 2.使用mock调试自己写的方法 3.使用mock解除依赖关系 1.安装 由于我的是python2.7, ...
- 类Runtime
Runtime类的概述和使用 Runtime类概述 每个Java应用程序都有一个Runtime类实例,使应用程序能够与其运行的环境相连接.可以通过getRuntime方法获取当前运行时. 应用程序不能 ...