🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

Node.js 25 正式發布:性能飆升、安全升級、全面向 Web 靠攏!

一、Node.js 25 來了:一次更現代、更安全的“Web Runtime”進化

Node.js 25.0.0 已於本週正式發布。
這一版本不僅帶來了 V8 引擎升級(14.1),還正式引入 細粒度權限模型預設啟用的 Web Storage API,讓 Node.js 在性能、安全性與 Web 標準相容性上邁出關鍵一步。

從整體趨勢上看,Node.js 正在從“後端執行時”演化為一個 更貼近瀏覽器語義的通用執行平台
本次版本代號 “Iron”,象徵穩定與強化 —— 這也是官方對現代 Node 的定位:高性能 + 高安全 + 高相容性


大家好,我是考拉!
這是我歷時 1 個多月翻譯的 Nest.js 中文文檔( V10.x 版本)。就在 1024 這天上線吧!網站訪問速度還是蠻快的哦!
Nest中文文檔訪問地址 Nest中文文檔 nestjs.inode.club

二、V8 升級到 14.1:性能全面提升

Node.js 25 最大的底層變化是 升級到 V8 14.1 引擎,這一版本帶來了顯著的性能與開發體驗改進:

1. JSON.stringify 大幅提速

V8 優化了內部序列化邏輯,使 JSON.stringify 在處理大型物件時速度提升可達數倍,API 返回結果更穩定。
這對於需要序列化海量配置或響應數據的場景(如 SSR、API 網關)尤其顯著。

2. 內置 Uint8Array Base64/Hex 轉換

Node.js 25 新增了 Uint8Array.toBase64() / Uint8Array.fromBase64() 等內置方法,
讓數據編碼和解碼無需依賴第三方庫(如 Buffer 或 base64-js),簡化腳本邏輯。

// 範例:高效轉換 Buffer ⇄ Base64
const buffer = Buffer.from('Hello, Node.js 25!');
const uint8 = new Uint8Array(buffer);
const base64 = uint8.toBase64();

console.log(base64); // 'SGVsbG8sIE5vZGUuanMgMjUh'

// 反向轉換
const decoded = Uint8Array.fromBase64(base64);
console.log(Buffer.from(decoded).toString()); // 'Hello, Node.js 25!'

3. WebAssembly + JIT 優化

V8 持續改進了 JIT pipeline 與 wasm 編譯路徑,模組加載與執行延遲進一步降低。
這對於使用 Rust / C++ 模組或 AI 推理擴展的 Node 應用尤為有益。


三、安全模型全面增強:預設更安全的 Node.js

Node.js 25 引入了新的 權限模型(Permission Model),這項實驗性特性正在成為預設安全策略的核心部分。

更細粒度的運行時控制

  • --allow-net:是否允許網路訪問
  • --allow-inspector:是否允許除錯訪問
  • --experimental-permission:啟用權限模型

這意味著開發者可以像在瀏覽器沙箱中一樣,隔離敏感操作,防止包依賴被攻擊或誤用。

// 範例:限制網路訪問
import net from 'node:net';

try {
  const socket = net.createConnection({ host: 'example.com', port: 80 });
  socket.on('connect', () => console.log('Connected!'));
} catch (err) {
  console.error('Permission denied:', err.message);
}

💡 運行時需添加:

node --experimental-permission --allow-net app.js

這類安全控制為 Node CLI 工具、Electron 應用或伺服器端插件系統提供了新的“沙箱”基礎。


四、Web 標準整合:預設啟用 Web Storage

Node.js 25 正式取消了 --experimental-webstorage 標誌,
Web Storage(localStorage / sessionStorage)現已預設可用!

這意味著 Node.js 現在可以像瀏覽器一樣使用本地存儲,
極大簡化了 SSR(服務端渲染)與同構(isomorphic)開發流程。

// 範例:Node 中的 localStorage
localStorage.setItem('user', JSON.stringify({ name: 'Developer' }));
const user = JSON.parse(localStorage.getItem('user'));
console.log(user); // { name: 'Developer' }

localStorage.clear();

對於使用 React Server Components、Next.js、Remix 等框架的開發者來說,
這一步讓“前後端共享邏輯”更自然,也減少了環境相容層的複雜性。


五、棄用與清理:告別舊時代的 API

Node.js 25 同時對歷史遺留 API 做了重要清理:

  • 移除 SlowBuffer(長期棄用)
  • 廢棄 fs.rmdir(..., { recursive: true }) 的 recursive 選項
    → 改用 fs.rm(path, { recursive: true })
  • 🧰 支持便攜編譯快取(Portable Compile Cache)
    提升跨平台構建與 CI/CD 性能
  • 🔬 WebAssembly 新增 JSPI(JavaScript Plugin Interface)
    支持 JS ↔ Wasm 的高效互動

同時,內部依賴也迎來更新:

  • npm → 11.6.2
  • nghttp3 → 1.11.0
  • ngtcp2 → 1.14.0(增強 QUIC 協議支持)
  • 新增 V8 CPU 分析與 QUIC 測試伺服器工具

六、Node.js 25 的意義:從“伺服器端”走向“通用執行平台”

如果說 v18~v20 是“穩定性時代”,
那麼 v25 明顯代表了 Node.js 向“Web 統一運行時”的進一步靠攏:

演進方向 具體體現
性能現代化 V8 14.1 + 編譯快取 + JIT 優化
安全預設化 權限模型 + 沙箱機制
Web 標準化 Web Storage、ErrorEvent 全局可用
跨環境一致性 SSR、CLI、Wasm 都可共享 API

這一切,讓 Node.js 不再只是“後端的 JS”,
而是逐步成為一個 可在瀏覽器、伺服器端、邊緣運算中無縫運行的通用平台


七、升級建議

  • v25 屬於 Current(實驗)版本,不建議立即用於生產環境
  • 適合探索新特性、驗證相容性、提前適配 v26 LTS
  • 重點關注代碼中使用的:
    • fs.rmdirSlowBuffer
    • 自訂權限模型(--allow-*)
    • Base64/Hex 編碼邏輯
  • 對 CLI / SSR / AI 推理類專案建議創建獨立分支進行試用

八、結語:更“Web”的 Node,更強的生態未來

Node.js 25 的每一次改動都在回應一個趨勢:
前端與後端的邊界,正在消失。

當你可以在同一份代碼中同時使用 fetchlocalStoragePermission APIUint8Array 編碼、甚至 Wasm 插件時,
Node.js 已不再只是運行腳本的工具,而是 下一代 Web Runtime 的重要一環

中文文檔剛上線,如果發現文檔中有什麼問題,歡迎指出,一定及時更新,希望可以方便更多小夥伴。
1024 程式設計師節日快樂,無BUG,祝大家都能早早下班!
我這邊也有一些 Node Nest.js 技術交流交流群,感興趣的可以加我的私人微信 ikoala520 進群,一起學習,共同進步。


原文出處:https://juejin.cn/post/7564243641860423718


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝27   💬3   ❤️7
628
🥈
我愛JS
📝1   💬9   ❤️1
72
🥉
御魂
💬1  
4
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付