Node.js v14 官方發布說明來了

2021-02-19 前端先鋒

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

我們很高興地宣布,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)中查看完整的功能列表。

相關焦點

  • Nodejs v14.3.0 發布支持頂級 Await 和 REPL 增強功能
    本周,Nodejs v14.3.0 發布。這個版本包括添加頂級 Await、REPL 增強等功能。REPL 增強通過自動補全改進對 REPL 的預覽支持,例如,下圖中當輸入 process.ver 之後,不需要輸入剩下的實際內容,它幫我們生成了自動補全的輸入預覽。
  • 一起來看看 Node.js v14.x LTS 中的這些新功能
    Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行時。在 2020 年 10 月 27 日 Node.js v14.15.0 LTS 版已發布,即長期支持版本,其中包含了很多很棒的新功能,以下內容也是基於筆者在日常 Node.js 工作和學習中所總結的,可能不全,同時也歡迎補充,有些功能之前也曾單獨寫過文章來介紹,接下讓我們一起看看都有哪些新的變化?
  • 在 Nodejs 中 ES Modules 使用入門講解
    本周 2020-05-26,Nodejs v12.17.0 LTS 版發布,去掉 --experimental-modules 標誌。刪除標誌也是將 ESM 變為穩定性而邁出的重要一步,根據 Nodejs 官方的發布說明,有望在今年下半年(10 月左右)刪除 Nodejs 12 中的警告,屆時 Node 14 將會成為 LTS。
  • dotNet 5 中執行 Node.js
    在低代碼產品中為了擴展功能,我們在業務編排中會擴展代碼塊的功能,允許用戶直接在界面中進行代碼(Node.js、 Python)的編寫,來實現取數或者賦值的一些功能。本文簡單介紹下在 dotNET 5 中怎麼樣進行 Node.js 的調用以及怎樣部署到 CentOS 和 Docker 容器中。
  • 版本發布:v14.18.0
    2021.09.28,Node.js 發布了 v14.18.0 版本,更新如下:(建議橫屏閱讀,體驗更佳)「命令行選項
  • Centos7下使用 nvm 安裝 nodejs 環境
    使用nvm安裝nodejs首先查詢可以使用的 nodejs 版本:$ nvm ls-remote# 或者$ nvm ls available安裝當前最新的 nodejs 版本:$ nvm install
  • linux環境下安裝nodejs
    Node.js發布於2009年5月,由Ryan Dahl開發,是一個基於Chrome V8引擎的JavaScript運行環境,使用了一個事件驅動
  • Node.js的安裝和環境配置(2020)
    是否安裝成功(1)打開cmd命令符,直接輸入node -v   出現版本號即可 我的版本號 v14.13.1(1)在Node.js的安裝目錄下創建文件夾【node_global】和【node_cache】(2)打開cmd命令提示窗口:輸入以下命令:
  • Node.js的下載和安裝教程
    Node.js發布於2009年5月,由Ryan Dahl開發,是一個基於Chrome
  • NVM安裝Node.js
    過後突然想起之前學的前端視頻,有提到過要對開發前端項目時,要對node.js的版本進行管理。果然他是下了一個最新node.js版本進行編譯運行,降低了版本後,項目就正常編譯運行了。前端最近幾年發展尤為迅速,版本迭代也很多,很多以前的項目是依賴於不同版本的node.js,於是為了方便處理各版本的node.js切換,就不能直接安裝node.js,需要通過NVM來進行安裝。
  • 運維的報表之路,用 node.js 輕鬆發送 grafana 報表
    我們通過 nodejs 的模塊 puppeteer + nodemailer 實現了grafana pannel 圖表的郵件報表功能,基本滿足了我們在自動化報表這塊的需求。/dist/node/v14.3.0/node-v14.3.0-linux-x64.tar.xztar -xf node-v14.3.0-linux-x64.tar.xzvi /etc/profile#set for nodejsexport NODE_HOME=/opt/node-v14.3.0-linux-x64export PATH=$NODE_HOME/bin:$PATHsource
  • Node.js學習—npm簡介
    簡介npm 是 Node.js
  • OrangePi Zero2測評|為家居智能化構建環境(MQTT Broker和Node-Red部署)
    我們可以嘗試訂閱和發布一個消息來測試一下。入上圖中一樣,我們訂閱/mqtt/test的主題,同時發布一個/mqtt/test的主題消息,看看系統的反饋。它允許程式設計師通過組合各部件來編寫應用程式。這些部件可以是硬體設備(如:Arduino板子)、Web API(如:WebSocket in和WebSocket out)、功能函數(如:range)或者在線服務(如:email)。  • Node-Red提供基於網頁的編程環境。通過拖拽已定義node到工作區並用線連接node創建數據流來實現編程。
  • Nodejs 14 大版本中新增特性總結
    matchAll() 方法在 Node.js v12.4.0 以上版本已支持,該方法有個限制,如果設置的正則表達式沒有包含全局模式 g ,在 Node.js v14.5.0 之後的版本如果沒有提供會拋出一個 TypeError 異常。
  • Node.js TLSWrap 實現中的釋放後使用漏洞分析
    Node v14.11.0 版本的 TLS 實現中存在一個釋放後使用漏洞。當寫入啟用 TLS 的套接字時,node::StreamBase::Write 調用 node::TLSWrap:DoWrite,其第一個參數為新分配的 WriteWrap 對象。
  • 2017,我們來聊聊 Node.js
    我們就數一下從v0.1到0.12用了6年2015-01-14發布了v1.0.0版本(io.js)2.x(io.js)3.x(io.js)2015年09月Node.js基金會已發布Node.js V4.0版 與io.js合併後的第一個版本2015年10月Node.jsv4.2.0將是首個lts長期支持版本
  • Node.js前世今生
    定義我們學習掌握一門新技術時候,第一步應當從它的官方文檔開始認知,打開Node.js官方文檔可以看到比較顯眼的一句話是。在這裡插入圖片描述Node.js是建立在Chrome V8 上面的一個JavaScript運行環境通俗點解釋: js屬於一種腳本性語言,然而腳本語言運行需要一個解析器來解析,對於我們原來寫的js代碼大部分都是運行在網頁上,所以瀏覽器本身就擔當了解析器的角色
  • Node.js 15正式版發布
    英文 | https ://medium.com/@nodejs/node-js-v15-0-0-is-here-deb00750f278前兩天,Node.js
  • 在 Node.js 中使用診斷報告快速追蹤問題
    Diagnostic report 是 Node.js v14.x 提供的一個穩定功能,在某些情況下會生成一個 JSON 格式的診斷報告,可用於開發、測試、生產環境。報告會提供有價值的信息,包括:JavaScript 和本機堆棧信息、堆統計信息、平臺信息、資源使用情況等,幫助用戶快速追蹤問題。
  • centos7.6部署安裝Wikijs
    寫在前面環境wiki安裝路徑:/var/wikinode安裝路徑:/usr/local/node安裝軟體前,先看看官網的說明文檔