Node 10 新功能概览(译)
以代號“Dubnium”為代表的Node 10于2018年4月24日發布,并將于2018年10月進入長期支持(LTS)。JavaScript開發人員一直在激動地等待今天,今天我們來看看這個版本帶來的新特征。
Adding Error Codes
現在,Node中的錯誤信息已被標準化。
在Node環境中,處理錯誤信息一直是一個痛苦的工作。 以前,它們只包含一個沒有其他標識符關聯的字符串消息。 如果開發人員希望程序根據特定消息采取調試操作,唯一的辦法是對錯誤內容進行字符串比較。
由于錯誤信息的處理需要精確的字符串匹配,因此即使對消息的最小更新也無法添加到下一個主要節點版本,以便它不會中斷SemVer。 通過將錯誤從消息中解耦出來,它將使開發人員更輕松地工作,并允許Node在不引入重大更改的情況下改進錯誤消息。 要了解更多信息,請閱讀Michael Dawson的文章節點錯誤代碼。
N-API 不再是實驗性功能
Node文檔將N-API描述為構建本地插件的API。 它獨立于底層的JavaScript運行時(ex V8),并作為Node.js本身的一部分進行維護。 這個API將是跨Node.js版本穩定的應用程序二進制接口(ABI)。 它旨在將Addons與基礎JavaScript引擎中的更改隔離,并允許為一個版本編譯的模塊在更高版本的Node.js上運行,而無需重新編譯。
之前在Node 8中實驗性地引入了N-API,并將從Node 10開始穩定。在Node版本之間升級不再會引起模塊損壞。 它也將向后移植以實現Node.js v6.x和v8.x的兼容性。
原生的 Node HTTP/2 變得更穩定
Node 8 引入了一個實驗性的 HTTP/2 模塊,這次是對 Node 的一次很好的升級。 HTTP/2 改進了標準的 HTTP 協議:
多路復用
單一連接
服務器推送
優先級
頭壓縮
脫離實驗階段后,原生的 HTTP/2 模塊將有助于改進節點服務器和它們提供的Web體驗。
V8 引擎 v6.6 的性能改進
Node 停止使用 Chromium 中的 V8 JavaScript引擎,并且 Node.js v10 使用了最新版本的V8 引擎。 對于瀏覽器而言,Chrome 66 提供的V8 Engine v6.6在JavaScript的解析和編譯時間方面可以減少約20-40%。 因此,我們可以預期 Node 10 也會在這方面有更大的收益。 而且它還提供異步生成器和陣列性能改進。
速度才是最重要的,最新的版本并不會讓人失望。 查看V8團隊的文章以了解更多信息。
更好地支持ES模塊(ESM)
// ESM import pkg from “./pkg” export default { a, b: 2 } vs. // CJS const pkg = require(“./pkg”) module.exports = { a, b: 2 }雖然我們在 Node 10 中沒看到對ES模塊的全部支持,但他們仍在努力完善。
Node.js 一直在使用CommonJS(CJS),它是 require 和 module.exports 語法。 在2015年的史詩級ES6版本中,推出了一種新的模塊系統,即ECMAScript模塊(ESM)。 作為ECMA的官方實施以及開發人員的熱愛和廣泛采用,Node一直致力于實施ESM規范。
將ESM集成到Node中并不是一個完全平滑的路徑,因為它與當前系統沖突。 然而,對齊的能力是非常重要的,Node正在努力提供解決方案。 如果您想了解更多信息,Gil Tayar 就此話題寫了一篇很棒的文章。
改進了診斷追蹤
Node 10 添加了跟蹤事件,為開發人員提供更多關于其Node.js應用程序可見性。 這種新的功能可以提供有關時間和性能問題的改進指標。 API 允許用戶在運行時打開或關閉事件,從而可以根據需要診斷問題。
在啟動 node 應用時,添加參數 --trace-event-categories可以將其打開,可以文檔里了解到更多。
配備npm 6
npm最近從v5.7升級到v6.0,并且Node 10將立即提供更新。npm的這一版本增加了所有各種改進,包括性能,安全性和穩定性。 在他們的博客上了解更多關于npm v6的信息。
升級到OpenSSL 1.1.0版
Node配備了現代加密支持,可支持備受期待的 ChaCha20 密碼和 Poly1305 驗證器。 TLS 1.3最近已完成定稿,待 Node.js v10 在10月份發布 LTS 時,它將會完全支持該標準。
fs 也可以有 promise
與文件系統交互是許多 Node 應用程序的主要組成部分,Node 10將承諾發行fs包的實驗版本。 以前這些函數通過回調處理異步操作,但可以使用Node 8附帶的util.promisify()函數進行轉換?,F在,開發人員可以在不需要額外步驟的情況下使用帶有promise的fs。
原文
https://levelup.gitconnected....
總結
以上是生活随笔為你收集整理的Node 10 新功能概览(译)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《从Paxos到ZooKeeper 分布
- 下一篇: 【LeetCode】620. 有趣的电影