Node 10、12、14 版本的更新比對


Node 10

參見 Node CHANGELOG_V10

  • vm: add dynamic import support。支持動態的 import。

但 ES 模塊仍舊屬於實驗性質,並不能在代碼中直接使用 import/export 除非開啟實驗性質的 flag,想使用還是得參見如何在 NodeJS 中寫 ES6 import

  • Updated nghttp2 to 1.34.0. This adds RFC 8441 extended connect protocol support to allow use of WebSockets over HTTP/2。將 nghttp2 更新為 1.34.0。這增加了 RFC 8441 擴展連接協議支持,以允許通過 HTTP/2 使用 WebSockets。

Node 8 引入了一個實驗性的 HTTP/2 模塊,這次是對 Node 的一次很好的升級。 HTTP/2 改進了標准的 HTTP 協議,有着多路復用,單一連接,服務器推送,頭壓縮等先進處,此次還修復了一些安全性的問題,並且還加上 websocket 的支持。

  • Adding Error Codes。現在,Node中的錯誤信息已被標准化。
  • The n-api is no longer experimental. [cd7d7b15c1]。N-API 不再是實驗性功能

Node文檔將 N-API 描述為構建本地插件的 API。 它獨立於底層的 JavaScript 運行時(ex V8),並作為 Node.js 本身的一部分進行維護。 這個 API 將是跨 Node.js 版本穩定的應用程序二進制接口(ABI)。 它旨在將 Addons 與基礎 JavaScript 引擎中的更改隔離,並允許為一個版本編譯的模塊在更高版本的 Node.js 上運行,而無需重新編譯。

  • patch V8 to 6.6.346.24。Node 停止使用 Chromium 中的 V8 引擎,而使用 v8 的 6.6 版本,

  • 改進了診斷追蹤。Node 10 添加了跟蹤事件,為開發人員提供更多關於其Node.js應用程序可見性。在啟動 node 應用時,添加參數 --trace-event-categories可以將其打開,可以文檔里了解到更多

  • update npm to 6.14.3。更新 NPM 6,npm的這一版本增加了所有各種改進,包括性能,安全性和穩定性

  • upgrade openssl sources to 1.1.1e。Node配備了現代加密支持,可支持備受期待的 ChaCha20 密碼和 Poly1305 驗證器

  • fs: remove experimental warning for fs.promises。fs 可直接使用 promise 了,不再需要像 Node 8 中使用 util.promisify()函數進行轉換。

const fs = require('fs');
const fsPromises = fs.promises;

// 同步讀取
console.log(fs.readFileSync('temp.txt', 'utf8'));

// promise 讀取,感覺更麻煩了。

async function doRead() {
  let filehandle = null;
  try {
    filehandle = await fsPromises.open('temp.txt', 'r+');
    let read = await filehandle.readFile();
    console.log(read);
  } finally {
    if (filehandle) {
      // 如果文件已打開,則關閉文件。
      await filehandle.close();
    }
  }
}

doRead().catch(console.error);

Node 12

參見 Node CHANGELOG_V12

  • update V8 to 7.4.288.13。其中可以使用 Async 調用棧追蹤了。
  • 集成 Heap Dumps,打印堆快照功能,方便定位內存泄漏。參加util: integrate node-heapdump into core 獲取更多信息
  • properly configure default heap limits,使用更合適的默認堆內存限制。V8 會使用默認的的方案(32位系統上是 700MB 的限制,64位系統則是 1400MB,當然會檢測機器是否有這么高的內存,沒有的會也會縮減占用)根據可用內存來配置堆內存限制確保了 Node.js 不會因為使用超出可用內存而導致異常退出。這在處理大型數據集時特別有用。和以前一樣,如果默認值不適合您的應用程序,通過設置 max-old-space-size 仍然可以使用不同的限制。
  • switch default parser to llhttp (Anna Henningsen)。使用 llhttp 替換了默認的 http 解析器。並且 llhttp 的版本是 2.0.4。llhttp 在 v11.2.0 中首次作為llhttp experimental 引入,在此版本中,llhttp 將不再作為 experimental。有關於 llhttp,參見llhttp是如何使Node.js性能翻倍的?
  • Worker Threads,Worker Threads 已經不再需要 flag 了。
  • Node.js 12 帶來了支持 ES6 Module 的最新實驗版本。但仍舊不能直接在代碼里使用它,想使用還是得參見如何在 NodeJS 中寫 ES6 import

Node 14

參見 Node CHANGELOG_V14

  • ECMAScript Modules - Experimental Warning Removal

In Node.js 13 we removed the need to include the --experimental-modules flag, but when running EcmaScript Modules in Node.js, this would still result in a warning ExperimentalWarning: The ESM module loader is experimental.

自 Node 13 開始可以直接使用 ES Modules 但是會報警,Node 14 后可以使用並且不報警了。

  • V8 升級到 8.1
  • ArrayBuffer 使用新的 V8 ArrayBuffer API
  • openssl sources 更新到 1.1.1
  • Console groupIndentation option。console 可以配置超過兩個空格的長度。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM