javascript
node JS獲取GPS_Node.js 14 正式发布:V8 引擎升级,新增异步本地存储 API
Node.js 14 版本于近日正式發布, 此版本包含的亮點如下:
- 對診斷功能的改進
- 升級 v8 引擎
- 新增實驗性的異步本地存儲 API
- 強化流 API
- 移除實驗性模塊中的警告
- 移除一部分早期版本中廢棄的 API
本文最初發布于 Medium 的 Nodejs 專欄,經原作者授權由 InfoQ 中文站翻譯并分享
Node.js 14 取代 Node.js 13 成為了我們的當前(current)版本。根據發布時間表,Node.js 14 將是未來 6 個月的當前版本,然后在 2020 年 10 月升級為穩定版本 (LTS)。 像往常一樣,企業用戶應該等到 10 月份 Node.js 升級為 LTS 之后,再升級其生產環境中的 Node.js 版本。 不過,現在是使用 Node.js 14 測試應用和嘗試新功能的最佳時機。
提醒一下,Node.js 12 和 Node.js 10 的穩定版本將分別持續維護到 2022 年 4 月和 2021 年 4 月(點擊查看更多 LTS 策略)。
點擊 https://nodejs.org/en/download/current/ 下載新版本,馬上開始學習吧!
在我們開始深入介紹新版本的功能之前,需要提醒一點,那就是新版本中添加的功能會很快被添加到當前穩定版本中去,這就意味著我們在不升級主版本的情況下,也可以在當前穩定版本的小版本更新中使用這些新功能。因此借這個機會我們向大家重點介紹下 Node.js 14 版本中的一些內容,即使這些內容中可能有些部分已經在之前的版本中存在了。
診斷報告變成穩定功能
在 Node.js 14 中診斷報告將是一個穩定的功能(在 Node.js 12 中是試驗性的功能)。在推進和建立可用、易用的 Node.js 診斷功能的工作進程中,這是非常重要的一步。其中大部分工作是由 Node.js 診斷工作組推進的。
診斷報告功能使你在生成報告的時候,既可以根據需要生成,也可以通過事件觸發生成。對診斷報告的信息分析可以幫助你診斷各種生產環境問題,包括崩潰、性能慢、內存泄露、CPU 使用率高、未捕獲的異常等。點擊鏈接可以了解到更多關于診斷報告功能的信息。作為一個穩定的特性,啟用診斷報告所需的命令行選項將減少一個,并且用戶在生產環境中可以很容易啟用它。
V8 升級到 V8 8.1
與往常一樣,新版本的 V8 JavaScript 引擎帶來了性能調整和改進,同時也使 Node.js 保持了在語言和運行時方面持續改進的一致性。V8 的升級還給我們帶來了一個好玩的命名,V8 的版本 8(“ V8 的 V8”)。
新的 JavaScript 功能主要包括:
- 可選鏈—— MDN
- Nullish 合并—— MDN
- Intl.DisplayNames —— MDN
- 為 Intl.DateTimeFormat 啟用 calendar 和 numberingSystem 選項—— MDN
了解 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 中添加了該 API)。我們正在尋求社區來嘗試這個 API,并向我們反饋有關抽象模型、API 接口、用例覆蓋范圍、功能穩定性、命名、文檔等方面的信息,這樣我們就可以在以后的版本中將其變成穩定功能。給我們提供反饋的最佳方法是在診斷倉庫的問題區)創建一個問題,并命名為“AsyncLocalStorage API 的經驗報告”。
流
在 Node.js 的流實現中,此版本中提供了一些標記為 SemVer major(譯者注:SemVer major 表示的是大版本號不兼容)的更改。這些更改旨在提高 Streams API 的一致性,以消除歧義并簡化 Node.js 核心各個部分的行為。例如,http.OutgoingMessage 與 stream.Writable 類似,而 net.Socket 的行為和 stream.Duplex 完全一樣。一個顯著的變化是 autoDestroy 選項現在默認設置為 true,使流在結束后始終調用 _destroy。盡管我們認為這些 SemVer major 更改對大多數程序不會有影響,因為它們只更改了一些邊緣的場景,但如果你嚴重依賴 Stream,最好在 Node.js 14 還是當前版本時進行測試,以便為未來的發布做好準備。 Node.js 14 將會在 2020 年 10 月成為 LTS。
實驗性 Web Assembly 系統接口
用 Web Assembly 編寫的 Node.js 包為某些使用場景帶來了更好的性能和跨平臺支持的機會。 為了支持這些場景,14.x 版本中包含了 Web Assembly 系統接口( WASI )的實驗性實現。雖然 WASI 對 Node.js v14 來說并不是新事物,但值得注意的是它在簡化原生模塊的體驗上非常有潛力。你可以在 API 文檔中了解有關它的更多信息: https://nodejs.org/api/wasi.html。
移除實驗模塊警告
其實在 Node.js 13 中,我們就已經移除了實驗模塊警告,不再需要使用 -experimental-modules 標志來處理,但是如果在 Node.js 中使用 EcmaScript Modules 功能,Node.js 13 中仍然會發出實驗功能警告:ESM 模塊導入屬于試驗性功能。
從 Node.js 14 開始,在 Node.js 中使用 ESM 時不再會出現此警告。雖然 Node.js 中的 ESM 實現仍處于試驗階段。根據我們的穩定性指數:“該功能不受語義版本控制規則的約束。向后兼容的更改或刪除可能會在將來的任何版本中發生。”在生產環境中用戶應謹慎使用該功能。
請記住,Node.js 中 ESM 的實現和你所熟悉的并不一樣。大多數轉譯工作流都支持的一些功能是 Node.js ESM 實現不支持的,例如:可選的文件擴展名或者 JSON 模塊。來自轉譯環境的模塊很可能需要一定程度的重構才能在 Node.js 中使用。值得一提的是,我們的許多設計決策都是基于兩個主要目標做出的,即規范合規性和 Web 兼容性。我們相信,當前的實現為編寫 ESM 模塊提供了一個可以長期使用的模型,為走向通用 JavaScript 的目標鋪平了道路。請在文檔中內容。
雖然當前 Node.js 中的 ESM 實現仍處于試驗階段,但我們相信,推進 Node.js 中 ESM 功能到“穩定”狀態是近在咫尺的。消除警告是朝這個方向邁出的重要一步。
新的編譯器和平臺最低要求
Node.js 為很多平臺提供了預構建二進制文件。針對每個主版本,都會對最小工具鏈做適當的評估和提高。
為了支持包認證功能,我們在這次發布時將所有 macOS 的二進制文件轉到了 macOS 10.15(Catalina)下用 Xcode 11 編譯了。由于二進制文件仍在編譯中,以達到支持相應編譯目標的發行要求,我們預計不會對較老版本的 macOS 的 Node.js 用戶產生負面影響。針對 Node.js 14,我們將最低的 macOS 支持版本提高到了 macOS 10.13(High Sierra)。
在基于 Linux 的平臺上,對于 Node.js 14,最低 GCC 版本仍為 GCC 6,但是我們計劃為某些使用 GCC 8 的平臺構建并發布二進制文件。
針對停止維護的 Windows 系統版本,Node.js 14 將不會為其發布版本。
有關更多詳細信息,請參見 Node.js BUILDING.md 。
行動呼吁
在進入 “current” 階段的 6 個月中,Node.js 14 將接受大量貢獻到 Node.js 中的新特性,因此在接下來的 6 個月中,此發行版本非常適合進行功能嘗試、項目測試以及升級 Node.js 到最新版本的兼容性測試,同時,請給我們提供反饋,幫助該發行版在 10 月順利過渡到 LTS。
感謝!
我們想借此機會對所有促成此版本發布的貢獻者和 Node.js 合作者表示非常感謝。我們還要感謝 Node.js 構建工作組 確保我們擁有創建和測試發行版的基礎架構,并對 Node.js 14 的工具鏈進行必要的升級。
你可以點擊這里查看 v14.0.0 版本的完整功能列表。
總結
以上是生活随笔為你收集整理的node JS獲取GPS_Node.js 14 正式发布:V8 引擎升级,新增异步本地存储 API的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: R 回归 虚拟变量na_如何优雅地计算多
- 下一篇: 方舟原始恐惧mod生物代码_重磅!命令与