Node 10
- 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
- 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
- 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 可以配置超過兩個空格的長度。