【新消息】Node.js v14 官方發佈說明來了


【新消息】Node.js v14 官方發佈說明來了


翻譯:瘋狂的技術宅

作者:Michael Dawson & Bethany Griggs

來源:medium

轉發鏈接:
https://mp.weixin.qq.com/s/xnkKsjJbkNX4gVgE9cGpUQ

本文由Michael Dawson 和 Bethany Griggs 撰寫,同時 Node.js 社區委員會和 Node.js 技術指導委員會也提供了貢獻。

【新消息】Node.js v14 官方發佈說明來了

我們很高興地宣佈,Node.js 14已於今天發佈!此版本的重點包括改進的診斷功能、V8 的升級、實驗性的異步本地存儲 API、流 API 的強化、實驗模塊警告的刪除以及一些已過時的 API 的刪除。

Node.js 14 取代了 Node.js 13 作為我們當前的發行版本。根據發佈時間表(
https://github.com/nodejs/Release#release-schedule),Node.js 14 是未來 6 個月的 Current 版本,到 2020 年 10 月再升級為長期支持版(LTS) 。企業用戶應該等到 10 月將 Node.js 升級為 LTS 時,再將其用於生產部署。但現在是用 Node.js 14 測試你的程序並嘗試新功能的最佳時間。

提醒一下 —— Node.js 12 和 Node.js 10 將分別保持長期支持,直到 2022 年 4 月和 2021 年 4 月(有關 LTS 策略的更多詳細信息,請查看這裡(
https://github.com/nodejs/release)))。

立刻開始!在這裡瞭解如何下載最新版本:
https://nodejs.org/en/download/current/

在深入瞭解這一版本的新功能之前,請務必注意,添加到主版中的新功能會迅速流入當前版本。這意味著重要功能可以在次要版本中使用。我們想借此機會重點介紹 Node.js 14 版本中的某些功能,即使它們可能已經被移植到較早的版本中了。

診斷報告變得穩定

診斷報告將會在 Node.js 14 中作為穩定功能發佈(在 Node.js 12 中作為實驗性功能添加)。這是項目正在進行的工作中的重要一步,目的是建立使用 Node.js 時可用的診斷程序並改進它們的易用性,其中大部分工作由 Node.js 診斷工作組推進。

診斷報告功能使你可以按需或在某些事件發生時生成報告。該報告包含有助於診斷生產中的問題的信息,包括崩潰、性能降低、內存洩漏、CPU 使用率高、意外錯誤等。有關診斷報告功能的更多信息,請參閱
https://medium.com/the-node-js-collection/easily-identify-problems-in-node-js-applications-with-diagnostic-report-dc82370d8029。作為一項穩定的功能,啟用診斷報告所需的命令行選項將會少一些,並且用戶應該更容易在生產環境中啟用診斷報告。

V8 升級到 V8 8.1

與往常一樣,新版本的 V8 JavaScript 引擎帶來了性能調整和改進,並使 Node.js 與語言和運行時方面的不斷改進保持了一致。而且 V8 的版本 8(“V8 of V8”)的命名還帶來了一些樂趣。

Highlights of the new JavaScript features include:

新的 JavaScript 功能的重點包括:

  • 可選鏈 — MDN:(https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Optional_chaining)
  • Nullish 合併 — MDN:(https://wiki.developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Nullish_Coalescing_Operator)
  • Intl.DisplayNames — MDN:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DisplayNames
  • 為 Intl.DateTimeFormat 啟用 calendar 和 numberingSystem 選項 — MDN:(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat)

有關 V8 中新功能的更多信息,請查看 Node.js V8 博客:https://v8.dev/blog.

實驗性異步本地存儲API

該項目一直在致力於幫助管理多個版本之間的異步調用上下文的 API。實驗性 Async Hooks API 在較早的版本中進行了介紹。Async Hook 的關鍵用例之一是異步本地存儲(也稱為連續本地存儲)。已經有許多 npm 模塊提供了能夠滿足這種需求的 API ,但是多年來,這些模塊很難在 Node.js 內核之外進行維護;並且該項目已經達成了共識,即讓 Node.js 提供 API 會更合理。14.x 版本帶來了實驗性的 Async Local storage API(也已反向移植到了 13.10)
https://nodejs.org/api/async_hooks.html#
async_hooks_class_asynclocalstorage。我們正在尋找可以試用此 API 的社區,並向我們提供有關抽象模型、API接口、用例覆蓋範圍、功能穩定性、命名、文檔等方面的反饋,以便我們可以在以後的版本中將其脫離實驗性。提供反饋的最佳方法是在此處(
https://github.com/nodejs/diagnostics/issues)的提出打開一個問題,並使其標題名為“Experience report with AsyncLocalStorage API”。

此版本包含一些在 Node.js Streams 實現中標記為 SemVer major 的更改。這些更改旨在提高 Streams API 的一致性,以消除歧義並簡化 Node.js 核心各個部分的行為。例如,http.OutgoingMessage 與 stream.Writable 和 net.Socket 的行為完全相同於stream.Duplex。一個顯著的變化是 autoDestroy 選項現在默認設置為 true,使流在結束後始終調用 _destroy。儘管我們不認為這些 SemVer 的重大更改會影響大多數程序,因為它們只會更改邊緣情況,但是如果你嚴重依賴 Stream,最好在 Node.js 14 是當前版本時進行測試,以便為未來的發佈做好準備。Node.js 14 將會在 2020 年 10 月成為 LTS。

實驗性 Web Assembly 系統接口

用 Web Assembly 編寫的 Node.js 包為某些用例帶來了更好的性能和跨平臺支持的機會。14.x 版本包含 Web 程序集系統接口(WASI)的實驗性實現,以幫助支持這些用例。儘管對 Node.js v14 來說並不是新事物,但這是值得注意的,因為 WASI 有潛力顯著簡化本機模塊的體驗。你可以在 API 文檔中瞭解有關它的更多信息:
https://nodejs.org/api/wasi.html。

移除實驗模塊警告

在 Node.js 13 中,我們不再需要包含 - experimental-modules 標誌,但是在 Node.js 中運行 EcmaScript Modules 仍然會產生警告 ExperimentalWarning: The ESM module loader is experimental。

從 Node.js 14 開始,在 Node.js 中使用 ESM 時不再出現此警告。但是 Node.js 中的 ESM 實現仍處於試驗階段。根據我們的穩定性指數:“該功能不受語義版本控制規則的約束。向後兼容的更改或刪除可能會在將來的任何版本中發生。”在生產環境中使用該功能時,用戶應保持謹慎。

請記住,Node.js 中 ESM 的實現不同於你熟悉的開發經驗。大多數轉換工作流都支持 Node.js ESM 實現不支持的功能,例如可選文件擴展名或 JSON 模塊。來自轉譯環境的模塊很可能需要一定程度的重構才能在 Node.js 中工作。值得一提的是,我們的許多設計決策都是有兩個主要目標的。規範合規性和 Web 兼容性。我們相信,當前的實現為編寫 ESM 模塊提供了未來的證明模型,該模塊為走向通用 JavaScript 鋪平了道路。請在文檔(


https://github.com/nodejs/node/blob/master/doc/api/esm.md)中閱讀更多內容。

Node.js 中的 ESM 實現仍處於試驗階段,但我們相信,我們已經非常接近能夠在 Node.js 中把 ESM 稱為“穩定”狀態。消除警告是朝這個方向邁出的重要一步。

新的編譯器和平臺最低要求

Node.js 為多種不同的平臺提供了預構建的二進制文件。對於每個主要版本,在適當的情況下都會進行評估並提出最少的工具鏈。

此版本在 macOS 上不會對舊版本的 macOS Node.js 用戶產生負面影響。對於Node.js 14,我們將最低的 macOS 目標版本提高到了 macOS 10.13(High Sierra)。

在基於 Linux 的平臺上,對於 Node.js 14,最低 GCC 版本仍為 GCC 6,但是我們計劃為某些使用 GCC 8 的平臺構建併發布二進制文件。

Node.js 14 也不會在壽命終止的 Windows 發行版上運行。

有關更多詳細信息,請參見 Node.js BUILDING.md(
https://github.com/nodejs/node/blob/v12.x/BUILDING.md#platform-list)。

呼籲行動

在進入 “current” 階段的 6 個月中,Node.js 14 將獲得為 Node.js 貢獻的最新功能。在接下來的6個月中,此發行版本非常適合嘗試最新功能、測試項目與最新 Node.js 更新的兼容性,並提供反饋,因此該發行版準備在 10 月過渡到 LTS。

要下載,請訪問:
https://nodejs.org/en/download/current/

謝謝!

我們想借此機會對所有促成此版本發佈的貢獻者和 Node.js 合作者表示非常感謝。我們還要感謝 Node.js 構建工作組 確保我們擁有創建和測試發行版的基礎架構,並對 Node.js 14 的工具鏈進行必要的升級。

Node.js v14.0.0 的發佈者是Bethany Griggs。你可以在 v14.0.0 release(
https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V14.md)中查看完整的功能列表。

翻譯:瘋狂的技術宅

作者:Michael Dawson & Bethany Griggs

來源:medium

轉發鏈接:
https://mp.weixin.qq.com/s/xnkKsjJbkNX4gVgE9cGpUQ


分享到:


相關文章: