服務器端 JavaScript 平台 Node.js 21.0 可用

用於以 JavaScript 運行網頁應用程式的平台 Node.js 21.0 已經發布。 Node.js 21.0 分支將獲得 6 個月的支援。在接下來的日子裡,Node.js 20 分支將會穩定下來並獲得 LTS 狀態,並將獲得支援直到 2026 年 18.0 月。對先前的 LTS 分支 Node.js 2025 的支援將持續到 16.0 年 2024 月,而先前的 LTS 分支 XNUMX 將持續到 XNUMX 年 XNUMX 月。

主要改進:

  • Fetch API 旨在透過網路下載資源並簡化適用於伺服器端和用戶端工作的通用 JavaScript 程式碼的編寫,現已宣布穩定。此實作基於HTTP/1.1 undici客戶端的程式碼,並且盡可能接近瀏覽器中提供的類似API。 API 包括 fetch() 方法和 Headers 物件。 Request 和 Response,代表 HTTP 標頭、請求和回應。 const res = 等待取得('https://nodejs.org/api/documentation.json');如果 (res.ok) { const data = await res.json();控制台.log(資料); }
  • 對 WebStreams API 的支援已經穩定,該 API 提供對透過網路接收的資料流的存取。 該 API 可讓您新增自己的處理程序,這些處理程序可以在資訊通過網路到達時處理數據,而無需等待整個檔案下載。 Node.js 中可用的物件包括 ReadableStream*、TransformStream*、WritableStream*、TextEncoderStream、TextDecoderStream、 CompressionStream 和 DecompressionStream。
  • 新增了WebSocket客戶端的實驗性實現, 與瀏覽器相容要啟用 WebSocket 支持,請使用“--experimental-websocket”標誌。
  • 新增了一種實驗模式,預設使用 ESM(ECMAScript 模組,用於瀏覽器模組)JavaScript 模組實現,而不是 CommonJS(特定於 Node.js)。此變更不會影響透過 package.json 中的「type」欄位明確定義格式、透過「--input-type」標誌指定格式或從檔案副檔名(ESM 為 .mjs,CommonJS 為 .cjs)明顯的模組。同時,未明確定義為 CommonJS 的模組(例如,具有「 .js」副檔名的模組)在啟用新模式時將被視為 ESM 模組。為了啟動新的模組設置,建議使用標誌“--experimental-default-type”。
  • V8 引擎已更新至版本 11.8,在 Chromium 118 中使用,現在支援 ArrayBuffer.prototype.transfer 方法、對陣列進行分組的功能(groupBy 方法)以及用於處理常數的 WebAssembly 指令(i32.add、i32.sub、 i32.mul、i64.add、i64.sub 和i64.mul)。
  • 對 globalPreload 處理程序的支援已停止,轉而支援註冊和初始化對組態模組的呼叫。
  • fs.writeFile 函數中新增了「flush」選項,以強制在每次寫入作業後將資料刷新到磁碟機。
  • 改進了與 URL 解析、取得 API、流、node:fs 和 HTTP 相關的程式碼的效能。
  • 新增了全域導覽器物件。 例如,要取得有關 CPU 核心數量的數據,您可以使用 navigator.hardwareConcurrency 屬性。
  • 在「—test」參數中,新增了對全域遮罩的支持,用於選擇要執行的測試(例如,您可以指定「—test **/*.test.js」)。
  • 包含的套件管理器 npm 10.2.0 和解析器 llhttp 9.1.2 已更新。
  • Visual Studio 2019 及更高版本已停止支援。 macOS 版本高於 11.0。

Node.js 平台既可用於 Web 應用程式的伺服器端支持,也可用於建立標準的客戶端和服務端網路程式。為了擴展 Node.js 應用程式的功能,我們準備了大量的模組,其中包括實作各種功能的模組。 服務器 以及 HTTP、SMTP、XMPP、DNS、FTP、IMAP、POP3 用戶端,用於與各種 Web 框架集成的模組,WebSocket 和 Ajax 處理程序,與 DBMS(MySQL、PostgreSQL、SQLite、MongoDB)的連接器,模板,CSS 引擎,加密演算法和授權系統(OAuth)的實現模板,XML 解析器,XML 演算法。

為了處理大量並行請求,Node.js 使用基於非阻塞事件處理和回呼函數的非同步程式碼執行模型。支援的連線複用方法包括 epoll、kqueue、/dev/poll 和 select。連線複用使用 libuv 函式庫,它在 Unix 系統上是 libev 的超集,在 IOCP 系統上是 IOCP 的超集。 Windowslibeio 函式庫用於建立執行緒池,並整合了 c-ares 以非阻塞模式執行 DNS 查詢。所有阻塞系統呼叫都在執行緒池內執行,然後像訊號處理程序一樣,透過一個未命名的管道傳回結果。 JavaScript 執行由 Google 的 V8 引擎提供(微軟也在開發一個基於 Chakra-Core 引擎的 Node.js 變體)。

Node.js 的核心類似於 Perl AnyEvent、Ruby Event Machine、Python Twisted 框架和 Tcl 事件實現,但 Node.js 中的事件循環對開發人員是隱藏的,類似於運行中的 Web 應用程序中的事件處理在瀏覽器中。 在為 node.js 編寫應用程序時,您需要考慮事件驅動編程的細節,例如,而不是執行“var result = db.query("select..");” 等待工作完成和後續處理結果,Node.js採用了異步執行的原理,即代碼被轉換為“db.query(“select..”, function (result) {result processing});”,其中控制將立即傳遞給進一步的代碼,查詢結果將在數據到達時進行處理。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster