服務器端 JavaScript Node.js 16.0 發布

Node.js 16.0 發布,這是一個用 JavaScript 運行網路應用程式的平台。 Node.js 16.0 被歸類為長期支援分支,但只有在穩定後的 16.0 月才會分配此狀態。 Node.js 2023 將支援到 14.0 年 2023 月。 Node.js 12.0 之前的 LTS 分支的維護將持續到 2022 年 10.0 月,前年的 LTS 分支 10 的維護將持續到 XNUMX 年 XNUMX 月。 對 XNUMX LTS 分支的支援將在 XNUMX 天後停止。

主要改進:

  • V8 引擎已更新至版本 9.0(Node.js 15 使用版本 8.6),它允許實現正則表達式的「索引」屬性等功能(包括具有匹配組的開始和結束位置的數組) ,Node.js 16 .waitAsync (Atomics.wait的非同步版本)中的Atomics方法,支援在頂級模組中使用await關鍵字。 在傳遞的參數數量與函數中定義的參數不對應的情況下,函數呼叫得到了加速。
  • Timers Promises API 已經穩定,提供了一組替代函數來處理傳回 Promise 物件作為輸出的計時器,因此無需使用 util.promisify()。 從“計時器/承諾”導入{setTimeout}; 非同步函數 run() { 等待 setTimeout(5000); console.log('你好,世界!'); } 跑步();
  • 新增了 Web Crypto API 的實驗性實現,旨在在 Web 應用程式端執行基本的加密操作,例如操作加密雜湊、生成和驗證數位簽章、使用各種加密方法對資料進行編碼和解碼以及產生加密安全隨機數。 該API還提供了產生和管理金鑰的功能。
  • N-API(用於開發附加元件的 API)已更新至版本 8。
  • 已過渡到新版本的套件管理器 NPM 7.10。
  • 穩定了 AbortController 類別的實現,該類別基於 AbortController Web API,並允許在選定的基於 Promise 的 API 中取消訊號。
  • 對第三版 Source Map 格式的支援已經穩定,該格式用於將生成、處理或打包的模組與原始原始程式碼進行比較。
  • 為了與舊版 Web API 相容,新增了 buffer.atob(data) 和 buffer.btoa(data) 方法。
  • 配備 M1 ARM 晶片的新 Apple 裝置的組裝已經開始。
  • 在Linux平台上,編譯器版本要求已提升至GCC 8.3。

回想一下,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});”,其中控制將立即傳遞給進一步的代碼,查詢結果將在數據到達時進行處理。

此外,值得注意的是,由 Node.js 創始人創立、旨在開發下一代 Deno 平台的 Deno 公司獲得了 4.9 萬美元的投資。 就其目的而言,Deno 與 Node.js 類似,但它試圖消除 Node.js 架構中的概念性錯誤,並為使用者提供更安全的環境。 值得注意的是,Deno 的商業解決方案將建構在完全開放的產品之上,具有單獨付費功能的 Open Core 模式被認為對於 Deno 平台來說是不可接受的。

來源: opennet.ru

添加評論