Node.js 18 ,該版本的亮點包括將 V8 JavaScript 引擎更新到 10.1、預設啟用全域性 Fetch API 以及核心測試執行器模組。Node.js 18 是未來 6 個月的「當前」版本,然後在 2022 年 10 月升級為 LTS ,升級為 LTS 後將支援到 2025 年 4 月。
新的瀏覽器相容 API
全域性 Fetch API(實驗性)
Node.js 18 預設提供一個實驗性的全域性 Fetch API,該實現來自 HTTP/1.1 使用者端 ,且受到 的啟發。
此 API 的範例用法:
const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); console.log(data); }
通過此新增,可以使用以下全域性變數:fetch
、 FormData
、Headers
、Request
、Response
。
- 可以通過
--no-experimental-fetch
命令列標誌來禁用 API。 - 該 API 將保持實驗性,直到新增更多測試覆蓋率,且 API 實現了儘可能多的規範。
Web Streams API(實驗性)
Node.js 現在在全域性範圍內公開了這意味著以下 API 可用:
ReadableStream
,ReadableStreamDefaultReader
,ReadableStreamBYOBReader
,ReadableStreamBYOBRequest
,ReadableByteStreamController
,ReadableStreamDefaultController
,TransformStream
,TransformStreamDefaultController
,WritableStream
,WritableStreamDefaultWriter
,WritableStreamDefaultController
,ByteLengthQueuingStrategy
,CountQueuingStrategy
,TextEncoderStream
,TextDecoderStream
,CompressionStream
,DecompressionStream
.
其他全域性 API
此外,以下 API 現在在全域性範圍內公開:
Blob
-BroadcastChannel
-
測試執行器模組(實驗性)
引入新的 node:test
模組,有助於建立以 TAP 格式報告結果的 JavaScript 測試。可通過 import test from 'node:test';
引入該模組。以下是具有兩個子測試的父測試範例:
test('top level test', async (t) => { await t.test('subtest 1', (t) => { assert.strictEqual(1, 1); }); await t.test('subtest 2', (t) => { assert.strictEqual(2, 2); }); });
注意:測試執行器模組只能使用node:
字首,node:
字首表示載入核心模組,省略字首並匯入'test'
會嘗試載入使用者區模組。
在該測試執行器的更多內容。
工具鏈和編譯器升級
Node.js 為幾個不同的平臺提供了預構建的二進位制檔案。
- Linux 的預構建二進位制檔案現在基於 Red Hat Enterprise Linux (RHEL) 8 構建,且與基於 glibc 2.28 或更高版本的 Linux 發行版相容,例如 Debian 10、RHEL 8、Ubuntu 20.04。
- macOS 的預構建二進位制檔案需要 macOS 10.15 或更高版本。
- 對於 AIX,支援的最低架構從 Power 7 提升到 Power 8。
- 由於在 Node.js 中構建 V8 依賴項的問題,用於 32 位 Windows 的預構建二進位制檔案將不可用。
V8 更新到 10.1
V8 引擎更新到 10.1 版本,該版本包括以下新功能:
- 對 的改進
- 函數
- 和的效能改進
| |