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

Node.js 18.0 發布,這是一個用 JavaScript 運行網頁應用程式的平台。 Node.js 18.0 被歸類為長期支援分支,但只有在穩定後的 18 月才會分配此狀態。 Node.js 2025.x 將支援到 16 年 2024 月。 Node.js 14.x 之前的 LTS 分支的維護將持續到 2023 年 12 月,前年的 LTS 分支 30.x 的維護將持續到 17 年 1 月。 XNUMX.x LTS 分支將於 XNUMX 月 XNUMX 日停止,Node.js XNUMX.x staging 分支將於 XNUMX 月 XNUMX 日停止。

主要改進:

  • V8 引擎已更新至版本 10.1,在 Chromium 101 中使用。與 Node.js 17.9.0 版本相比,現在支援 findLast 和 findLastIndex 方法等功能,用於尋找相對於末尾的元素一個數組和 Intl.supportedValuesOf 函數。 改進了 Intl.Locale API。 類別欄位和私有方法的初始化已加速。
  • 預設啟用實驗性 fetch() API,旨在透過網路載入資源。 此實作基於 HTTP/1.1 undici 客戶端的程式碼,並儘可能接近瀏覽器中提供的類似 API。 這包括對用於操作 HTTP 請求和回應標頭的 FormData、標頭、請求和回應介面的支援。 const res = wait fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = wait res.json(); 控制台.log(資料); }
  • 新增了 Web Streams API 的實驗性實現,提供對透過網路接收的資料流的存取。 該 API 可讓您新增自己的處理程序,以便在資訊透過網路到達時處理數據,而無需等待整個檔案下載。 Node.js 中現在可用的物件包括 ReadableStream*、TransformStream*、WritableStream*、TextEncoderStream、TextDecoderStream、 CompressionStream 和 DecompressionStream。
  • Blob API 已移至穩定版本,可讓您封裝不可變的原始數據,以便在不同的工作執行緒中安全使用。
  • BroadcastChannel API 已變得穩定,允許您以「一個發送者 - 多個接收者」格式以非同步模式組織訊息交換。
  • 新增了實驗模組節點:測試,用於在 JavaScript 中建立和執行測試,以 TAP(測試任何協定)格式傳回結果。
  • 提供了針對 Red Hat Enterprise Linux (RHEL) 8 和基於 Glibc 2.28+ 的其他發行版(包括 Debian 10 和 Ubuntu 20.04)以及 macOS 10.15+ 的現成組件的產生。 由於 V8 引擎建置存在問題,Windows 32 位元建置的建立已暫時停止。
  • 提供了一個實驗性選項,用於使用在啟動時初始化的使用者選擇的元件來建立 Node.js 可執行檔。 為了定義啟動元件,「--node-snapshot-main」選項已新增至設定建置腳本中,例如「./configure —node-snapshot-main=marked.js; 名稱節點”

Node.js 平台既可用於 Web 應用程序的服務器維護,也可用於創建常規客戶端和服務器網絡程序。 為了擴展Node.js應用程序的功能,已經準備了一個大的模塊集合,您可以在其中找到實現HTTP、SMTP、XMPP、DNS、FTP、IMAP、POP3服務器和客戶端的模塊、用於集成的模塊具有各種 Web 框架、WebSocket 和 Ajax 處理程序、DBMS 連接器(MySQL、PostgreSQL、SQLite、MongoDB)、模板引擎、CSS 引擎、加密算法和授權系統(OAuth)的實現、XML 解析器。

為確保處理大量並行請求,Node.js 使用基於非阻塞事件處理和回調處理程序定義的異步代碼執行模型。 支持的多路復用連接方法有 epoll、kqueue、/dev/poll 和 select。 對於連接多路復用,使用了 libuv 庫,它是 Unix 系統上的 libev 和 Windows 上的 IOCP 的附加組件。 使用libeio庫創建線程池,集成c-ares以非阻塞方式進行DNS查詢。 所有導致阻塞的系統調用都在線程池內部執行,然後像信號處理程序一樣,通過一個未命名的管道(pipe)將它們的工作結果傳回。 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

添加評論