Node.js 22 來了!
共 2706字,需瀏覽 6分鐘
·
2024-04-29 10:38
大廠技術(shù) 高級前端 Node進階
點擊上方 程序員成長指北,關(guān)注公眾號
回復(fù)1,加入高級Node交流群
本周 Node.js 22 版本發(fā)布了!亮點包括 require() ES 模塊、WebSocket 客戶端、V8 JavaScript 引擎的更新等等!
Node.js 22 將于十月進入長期支持(LTS)階段,但在那之前,它將在接下來的六個月內(nèi)作為“當(dāng)前”發(fā)布版本。我們鼓勵您探索此最新版本提供的新功能和優(yōu)勢,并評估它們對您的應(yīng)用程序的潛在影響。
該項目在許多領(lǐng)域取得了進展,許多新功能和修復(fù)已經(jīng)流入現(xiàn)有的 LTS 版本。因此,Node.js 22 更新日志中概述的更改僅代表自上一個主要版本發(fā)布以來的功能和工作的一小部分。本博客文章將針對這些變更添加一些額外的背景信息。
要下載 Node.js 22.0.0,請訪問:https://nodejs.org/download/current/。您可以在 https://nodejs.org/blog/release/v22.0.0 找到發(fā)布文章,其中包含此版本中包含的所有提交的完整列表。
V8 升級至 12.4
V8 發(fā)布的 12.4 版本包括諸如 WebAssembly 垃圾回收、Array.fromAsync、Set 方法和迭代器助手等新功能。
Maglev
V8 的 Maglev 編譯器現(xiàn)在默認(rèn)啟用于支持的架構(gòu)上(https://v8.dev/blog/maglev)。Maglev 提高了短生命周期 CLI 程序的性能。
由 Keyhan Vakil 貢獻(xiàn)于 #51360
支持 require() 同步 ESM 圖
此版本在 --experimental-require-module 標(biāo)志下為同步 ESM 圖添加了 require() 支持。
“譯者注:之前寫過一篇介紹,參考以下內(nèi)容 五月君,公眾號:Nodejs技術(shù)棧一個提出 5 年的 Node.js 模塊問題,終被解決!
如果啟用了 --experimental-require-module,并且被 require() 加載的 ECMAScript 模塊滿足以下要求:
在最接近的 package.json 或 .mjs 擴展中以 "type": "module" 字段顯式標(biāo)記為 ES 模塊。
完全同步(不包含頂層 await)。
require() 將會以 ES 模塊的形式加載請求的模塊,并返回模塊名稱空間對象。在這種情況下,它類似于動態(tài) import(),但是是同步運行的,并直接返回名稱空間對象。我們打算在將來默認(rèn)情況下啟用 require(esm),而無需該標(biāo)志。
運行 package.json 腳本
Node.js 22 包括一個新的實驗性功能,用于使用 cli 標(biāo)志 node --run <package.json 中的腳本> 執(zhí)行 package.json 中的腳本。它還支持 node --run test,這會執(zhí)行 package.json 腳本中的測試命令。
流默認(rèn)高水位標(biāo)記
將流的默認(rèn)高水位標(biāo)記從 16KiB 增加到 64KiB。這提供了全面的性能提升,但會略微增加內(nèi)存使用量。鼓勵在內(nèi)存敏感環(huán)境中的用戶顯式設(shè)置 setDefaultHighWaterMark。
監(jiān)視模式(node --watch)
從此版本開始,監(jiān)視模式被視為穩(wěn)定。在監(jiān)視模式下,監(jiān)視文件的更改會導(dǎo)致 Node.js 進程重新啟動。
WebSocket
WebSocket 的瀏覽器兼容實現(xiàn)以前被隱藏在標(biāo)志 --experimental-websocket 后面,現(xiàn)在將默認(rèn)啟用。這為 Node.js 提供了一個無需外部依賴項的 WebSocket 客戶端。
glob 和 globSync
此版本在 node:fsmodule 中添加了 glob 和 globSync 函數(shù),用于模式匹配。開發(fā)人員現(xiàn)在可以利用這些函數(shù)根據(jù)指定的模式匹配文件路徑。
改進 AbortSignal 創(chuàng)建的性能
此版本提高了創(chuàng)建 AbortSignal 實例的效率,顯著改善了 fetch 和測試運行器的性能。
行動呼吁
嘗試新的 Node.js 22 版本!我們始終樂意聽取您的反饋。使用 Node.js 22 測試您的應(yīng)用程序和模塊有助于確保您的項目與最新的 Node.js 更改和功能的未來兼容性。
另外值得注意的是,Node.js 18 將在 2025 年 4 月結(jié)束生命周期,因此我們建議您開始計劃升級到 Node.js 20(LTS)或 Node.js 22(即將成為 LTS)。
展望未來,Next-10 團隊正在進行一項調(diào)查,以收集來自生態(tài)系統(tǒng)的信息。通過參與來塑造 Node.js 的未來。在此提交您的反饋 https://linuxfoundation.surveymonkey.com/r/nodenext10survey24。
本文翻譯自 Node.js 官方博客 https://nodejs.org/en/blog/announcements/v22-release-announce
- End -
最后
Node 社群
我組建了一個氛圍特別好的 Node.js 社群,里面有很多 Node.js小伙伴,如果你對Node.js學(xué)習(xí)感興趣的話(后續(xù)有計劃也可以),我們可以一起進行Node.js相關(guān)的交流、學(xué)習(xí)、共建。下方加 考拉 好友回復(fù)「Node」即可。
“分享、點贊、在看” 支持一下
