Node.js 26 正式發布,這次更新的核心在於平台的現代化,將許多先前處於實驗階段的功能正式化,並清理掉過時的舊 API。對於開發者來說,最值得關注的是 Temporal API 的預設啟用以及 V8 引擎的升級。
解決 JavaScript 時間處理痛點的 Temporal API
長期以來,JavaScript 的 Date 物件一直被開發者視為噩夢。Date 物件在處理時區轉換、日期加減(Duration)以及不同行事曆格式時非常不直觀,且容易產生不可預期的 Bug,導致社群必須依賴像 Moment.js 或 date-fns 等第三方函式庫來補足功能。
Node.js 26 現在預設啟用了 Temporal API。這是一個全新的日期與時間處理標準,旨在提供一套強大且直覺的工具來處理時間點(Instant)、時區(Time Zone)、時間跨度(Duration)與行事曆。對工程實務而言,這意味著我們不再需要為了計算兩個日期之間差了多少天,或是將 UTC 時間轉換為特定時區而寫複雜的 Helper function,這些功能現在直接內建在平台中,能大幅提升程式碼的可讀性並減少時間計算錯誤。
V8 引擎升級與效能優化
Node.js 26 將 V8 JavaScript 引擎升級至 14.6 版本。V8 是 Node.js 的核心,負責將 JavaScript 轉譯為機器碼執行。這次升級帶來了幾個實用的語法糖與效能提升。
在 Map 物件的操作上,新增了 getOrInsert 與 getOrInsertComputed 兩個輔助方法。這解決了開發者經常遇到的模式:先檢查 Map 中是否存在某個 Key,如果不存在則插入預設值。現在可以用單一方法完成,簡化了邏輯。此外,Iterator.concat 讓迭代器的序列化操作變得更簡單。
在底層部分,這次更新對 JIT(Just-In-Time 編譯器,負責將熱點程式碼優化為高效能機器碼)以及 Garbage Collection(垃圾回收機制,負責自動釋放不再使用的記憶體)進行了全面優化,這將直接反映在應用程式的執行效率與記憶體管理上。
網路層與舊版 API 的清理
內建的 HTTP 客戶端 Undici 升級至 8.0 版本,這會直接優化 fetch API 的實作效能,且開發者不需要修改任何現有程式碼即可獲益。
與此同時,Node.js 26 執行了一次大規模的舊版 API 移除動作。例如,長期被標記為過時的 http.Server.prototype.writeHeader 已被正式移除,開發者必須全面改用 writeHead。此外,舊有的 _stream_* 模組也被刪除。這種清理動作雖然可能導致舊專案升級時出現 Breaking Changes,但對於維持平台長期健康與減少維護成本至關重要。
升級注意事項與版本週期
如果你打算將專案升級到 Node.js 26,請特別注意 NODE_MODULE_VERSION 已變更為 147。這意味著所有依賴 C++ 編寫的原生模組(Native Add-ons)都必須重新編譯,否則會導致執行時錯誤。
在發行週期方面,Node.js 26 是最後一個遵循舊有奇偶數版本排程的發行版,未來將轉向每年一次的發行節奏。Node.js 26 目前為 Current 版本,將在六個月後(2026 年 10 月)進入 LTS(Long-Term Support,長期支援)階段,屆時將與 Node.js 24 並行提供支援。
來源:infoq.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。