Node 12 值得關注的新特性

前言

時隔一年,Node.js 12 如約而至,正式發佈第一個 Current 版本。javascript

該版本帶來了諸如:html

  • V8 更新帶來好多不錯的特性。
  • HTTP 解析速度提高。
  • 啓動速度大幅提高。
  • 更好的診斷報告和堆分析工具。
  • ESM 模塊更新。

相關資料:java

LTS 是什麼?

image.png

若是你不瞭解 Node.js 的  Long Term Support 發佈策略的話,必定要看看 github.com/nodejs/Rele… 。node

就目前而言,Node.js 6.x 和 8.x 將在 2019 年底結束 LTS 的支持,你們儘快升級到 10.x 吧。git

快速體驗

$ nvs add node/12
$ nvs use 12
$ node -v
v12.0.0
複製代碼

具體參考這篇文章:科普文:使用 nvs 管理本地 Node.js 版本github

V8 更新到 7.4

大部分狀況下,咱們不用去考慮性能問題,坐等 V8 版本更新就行了。(大霧)api

本次版本更新,也帶來了好幾個不錯的特性:緩存

同時,跑了下咱們 Egg 的一些內部測試,發現序列化有 10~20% 的性能提高,恐怖如斯!安全

ECMAScript 新特性支持

隨着 V8 的更新,不少 ES 的新規範也落地了。支持列表參見:node.green/bash

如奇醜無比的 Private Class Fields 也能用了:

class IncreasingCounter {
  #count = 0;
  
  get value() {
    console.log('Getting the current value!');
    return this.#count;
  }
  increment() {
    this.#count++;
  }
}
複製代碼

HTTP 解析速度提高

默認的 HTTP 解析器切換爲 llhttp ,性能提高恐怖如斯:

image.png

點評:恐怖如斯。

啓動速度提高

經過 v8 code cache 的支持,在構建時提早爲內置庫生成代碼緩存,從而提高 30% 的啓動耗時。
同時,經過重用主進程緩存,Workers Threads 的啓動速度提高了 60% 。

點評:恐怖如斯。

Workers Threads

在 10.x 已經引入的 Workers Threads 特性,在 12.x 裏面默認啓用,無需使用 --experimental-worker 開啓。同時基於上一條的介紹,啓動的速度也獲得大幅提高。

相關介紹:medium.com/@Trott/usin…

診斷報告

提供了新的實驗性功能『診斷報告』,一個很是有用的特性。
可用於幫助分析諸如:崩潰,性能問題,內存泄漏,高 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,詳細參見這篇文章
相關文章
相關標籤/搜索