整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          「新消息」Node.js v14 官方發(fā)布說明來了

          「新消息」Node.js v14 官方發(fā)布說明來了



          譯:瘋狂的技術(shù)宅

          作者:Michael Dawson & Bethany Griggs

          來源:medium

          轉(zhuǎn)發(fā)鏈接:https://mp.weixin.qq.com/s/xnkKsjJbkNX4gVgE9cGpUQ

          ode.js 14 版本于近日正式發(fā)布, 此版本包含的亮點(diǎn)如下:

          • 對(duì)診斷功能的改進(jìn)
          • 升級(jí) v8 引擎
          • 新增實(shí)驗(yàn)性的異步本地存儲(chǔ) API
          • 強(qiáng)化流 API
          • 移除實(shí)驗(yàn)性模塊中的警告
          • 移除一部分早期版本中廢棄的 API

          本文最初發(fā)布于 Medium 的 Nodejs 專欄,經(jīng)原作者授權(quán)由 InfoQ 中文站翻譯并分享

          Node.js 14 取代 Node.js 13 成為了我們的當(dāng)前(current)版本。根據(jù)發(fā)布時(shí)間表,Node.js 14 將是未來 6 個(gè)月的當(dāng)前版本,然后在 2020 年 10 月升級(jí)為穩(wěn)定版本 (LTS)。 像往常一樣,企業(yè)用戶應(yīng)該等到 10 月份 Node.js 升級(jí)為 LTS 之后,再升級(jí)其生產(chǎn)環(huán)境中的 Node.js 版本。 不過,現(xiàn)在是使用 Node.js 14 測(cè)試應(yīng)用和嘗試新功能的最佳時(shí)機(jī)。

          提醒一下,Node.js 12 和 Node.js 10 的穩(wěn)定版本將分別持續(xù)維護(hù)到 2022 年 4 月和 2021 年 4 月(點(diǎn)擊查看更多 LTS 策略)。

          點(diǎn)擊 https://nodejs.org/en/download/current/ 下載新版本,馬上開始學(xué)習(xí)吧!

          在我們開始深入介紹新版本的功能之前,需要提醒一點(diǎn),那就是新版本中添加的功能會(huì)很快被添加到當(dāng)前穩(wěn)定版本中去,這就意味著我們?cè)诓簧?jí)主版本的情況下,也可以在當(dāng)前穩(wěn)定版本的小版本更新中使用這些新功能。因此借這個(gè)機(jī)會(huì)我們向大家重點(diǎn)介紹下 Node.js 14 版本中的一些內(nèi)容,即使這些內(nèi)容中可能有些部分已經(jīng)在之前的版本中存在了。

          診斷報(bào)告變成穩(wěn)定功能

          在 Node.js 14 中診斷報(bào)告將是一個(gè)穩(wěn)定的功能(在 Node.js 12 中是試驗(yàn)性的功能)。在推進(jìn)和建立可用、易用的 Node.js 診斷功能的工作進(jìn)程中,這是非常重要的一步。其中大部分工作是由 Node.js 診斷工作組推進(jìn)的。

          診斷報(bào)告功能使你在生成報(bào)告的時(shí)候,既可以根據(jù)需要生成,也可以通過事件觸發(fā)生成。對(duì)診斷報(bào)告的信息分析可以幫助你診斷各種生產(chǎn)環(huán)境問題,包括崩潰、性能慢、內(nèi)存泄露、CPU 使用率高、未捕獲的異常等。點(diǎn)擊鏈接可以了解到更多關(guān)于診斷報(bào)告功能的信息。作為一個(gè)穩(wěn)定的特性,啟用診斷報(bào)告所需的命令行選項(xiàng)將減少一個(gè),并且用戶在生產(chǎn)環(huán)境中可以很容易啟用它。

          V8 升級(jí)到 V8 8.1

          與往常一樣,新版本的 V8 JavaScript 引擎帶來了性能調(diào)整和改進(jìn),同時(shí)也使 Node.js 保持了在語言和運(yùn)行時(shí)方面持續(xù)改進(jìn)的一致性。V8 的升級(jí)還給我們帶來了一個(gè)好玩的命名,V8 的版本 8(“ V8 的 V8”)。

          新的 JavaScript 功能主要包括:

          • 可選鏈—— MDN
          • Nullish 合并—— MDN
          • Intl.DisplayNames —— MDN
          • 為 Intl.DateTimeFormat 啟用 calendar 和 numberingSystem 選項(xiàng)—— MDN

          了解 V8 中新功能的更多信息,請(qǐng)查看 Node.js V8 博客: https://v8.dev/blog 。

          實(shí)驗(yàn)性異步本地存儲(chǔ) API

          該項(xiàng)目一直在致力于幫助管理多個(gè)版本之間異步調(diào)用上下文的 API。實(shí)驗(yàn)性 Async Hooks API 已在早期的版本中引入了。Async Hook 的關(guān)鍵用例之一是異步本地存儲(chǔ)(也稱為連續(xù)本地存儲(chǔ))。已經(jīng)有許多 npm 模塊提供了 API 來滿足這種需求,但是這些年來,在 Node.js 核心之外維護(hù)這些功能一直很棘手;并且在這個(gè)項(xiàng)目上社區(qū)已經(jīng)達(dá)成共識(shí),認(rèn)為由 Node.js 提供統(tǒng)一的 API 會(huì)更合理,因此 14.x 版本帶來了實(shí)驗(yàn)性的 Async Local storage API (也在 13.10 中添加了該 API)。我們正在尋求社區(qū)來嘗試這個(gè) API,并向我們反饋有關(guān)抽象模型、API 接口、用例覆蓋范圍、功能穩(wěn)定性、命名、文檔等方面的信息,這樣我們就可以在以后的版本中將其變成穩(wěn)定功能。給我們提供反饋的最佳方法是在診斷倉(cāng)庫(kù)的問題區(qū))創(chuàng)建一個(gè)問題,并命名為“AsyncLocalStorage API 的經(jīng)驗(yàn)報(bào)告”。

          在 Node.js 的流實(shí)現(xiàn)中,此版本中提供了一些標(biāo)記為 SemVer major(譯者注:SemVer major 表示的是大版本號(hào)不兼容)的更改。這些更改旨在提高 Streams API 的一致性,以消除歧義并簡(jiǎn)化 Node.js 核心各個(gè)部分的行為。例如,http.OutgoingMessage 與 stream.Writable 類似,而 net.Socket 的行為和 stream.Duplex 完全一樣。一個(gè)顯著的變化是 autoDestroy 選項(xiàng)現(xiàn)在默認(rèn)設(shè)置為 true,使流在結(jié)束后始終調(diào)用 _destroy。盡管我們認(rèn)為這些 SemVer major 更改對(duì)大多數(shù)程序不會(huì)有影響,因?yàn)樗鼈冎桓牧艘恍┻吘壍膱?chǎng)景,但如果你嚴(yán)重依賴 Stream,最好在 Node.js 14 還是當(dāng)前版本時(shí)進(jìn)行測(cè)試,以便為未來的發(fā)布做好準(zhǔn)備。 Node.js 14 將會(huì)在 2020 年 10 月成為 LTS。

          實(shí)驗(yàn)性 Web Assembly 系統(tǒng)接口

          用 Web Assembly 編寫的 Node.js 包為某些使用場(chǎng)景帶來了更好的性能和跨平臺(tái)支持的機(jī)會(huì)。 為了支持這些場(chǎng)景,14.x 版本中包含了 Web Assembly 系統(tǒng)接口( WASI )的實(shí)驗(yàn)性實(shí)現(xiàn)。雖然 WASI 對(duì) Node.js v14 來說并不是新事物,但值得注意的是它在簡(jiǎn)化原生模塊的體驗(yàn)上非常有潛力。你可以在 API 文檔中了解有關(guān)它的更多信息: https://nodejs.org/api/wasi.html。

          移除實(shí)驗(yàn)?zāi)K警告

          其實(shí)在 Node.js 13 中,我們就已經(jīng)移除了實(shí)驗(yàn)?zāi)K警告,不再需要使用 -experimental-modules 標(biāo)志來處理,但是如果在 Node.js 中使用 EcmaScript Modules 功能,Node.js 13 中仍然會(huì)發(fā)出實(shí)驗(yàn)功能警告:ESM 模塊導(dǎo)入屬于試驗(yàn)性功能。

          從 Node.js 14 開始,在 Node.js 中使用 ESM 時(shí)不再會(huì)出現(xiàn)此警告。雖然 Node.js 中的 ESM 實(shí)現(xiàn)仍處于試驗(yàn)階段。根據(jù)我們的穩(wěn)定性指數(shù):“該功能不受語義版本控制規(guī)則的約束。向后兼容的更改或刪除可能會(huì)在將來的任何版本中發(fā)生。”在生產(chǎn)環(huán)境中用戶應(yīng)謹(jǐn)慎使用該功能。

          請(qǐng)記住,Node.js 中 ESM 的實(shí)現(xiàn)和你所熟悉的并不一樣。大多數(shù)轉(zhuǎn)譯工作流都支持的一些功能是 Node.js ESM 實(shí)現(xiàn)不支持的,例如:可選的文件擴(kuò)展名或者 JSON 模塊。來自轉(zhuǎn)譯環(huán)境的模塊很可能需要一定程度的重構(gòu)才能在 Node.js 中使用。值得一提的是,我們的許多設(shè)計(jì)決策都是基于兩個(gè)主要目標(biāo)做出的,即規(guī)范合規(guī)性和 Web 兼容性。我們相信,當(dāng)前的實(shí)現(xiàn)為編寫 ESM 模塊提供了一個(gè)可以長(zhǎng)期使用的模型,為走向通用 JavaScript 的目標(biāo)鋪平了道路。請(qǐng)?jiān)谖臋n中閱讀更多內(nèi)容。

          雖然當(dāng)前 Node.js 中的 ESM 實(shí)現(xiàn)仍處于試驗(yàn)階段,但我們相信,推進(jìn) Node.js 中 ESM 功能到“穩(wěn)定”狀態(tài)是近在咫尺的。消除警告是朝這個(gè)方向邁出的重要一步。

          新的編譯器和平臺(tái)最低要求

          Node.js 為很多平臺(tái)提供了預(yù)構(gòu)建二進(jìn)制文件。針對(duì)每個(gè)主版本,都會(huì)對(duì)最小工具鏈做適當(dāng)?shù)脑u(píng)估和提高。

          為了支持包認(rèn)證功能,我們?cè)谶@次發(fā)布時(shí)將所有 macOS 的二進(jìn)制文件轉(zhuǎn)到了 macOS 10.15(Catalina)下用 Xcode 11 編譯了。由于二進(jìn)制文件仍在編譯中,以達(dá)到支持相應(yīng)編譯目標(biāo)的發(fā)行要求,我們預(yù)計(jì)不會(huì)對(duì)較老版本的 macOS 的 Node.js 用戶產(chǎn)生負(fù)面影響。針對(duì) Node.js 14,我們將最低的 macOS 支持版本提高到了 macOS 10.13(High Sierra)。

          在基于 Linux 的平臺(tái)上,對(duì)于 Node.js 14,最低 GCC 版本仍為 GCC 6,但是我們計(jì)劃為某些使用 GCC 8 的平臺(tái)構(gòu)建并發(fā)布二進(jìn)制文件。

          針對(duì)停止維護(hù)的 Windows 系統(tǒng)版本,Node.js 14 將不會(huì)為其發(fā)布版本。

          有關(guān)更多詳細(xì)信息,請(qǐng)參見 Node.js BUILDING.md 。

          行動(dòng)呼吁

          在進(jìn)入 “current” 階段的 6 個(gè)月中,Node.js 14 將接受大量貢獻(xiàn)到 Node.js 中的新特性,因此在接下來的 6 個(gè)月中,此發(fā)行版本非常適合進(jìn)行功能嘗試、項(xiàng)目測(cè)試以及升級(jí) Node.js 到最新版本的兼容性測(cè)試,同時(shí),請(qǐng)給我們提供反饋,幫助該發(fā)行版在 10 月順利過渡到 LTS。

          感謝!

          我們想借此機(jī)會(huì)對(duì)所有促成此版本發(fā)布的貢獻(xiàn)者和 Node.js 合作者表示非常感謝。我們還要感謝 Node.js 構(gòu)建工作組 確保我們擁有創(chuàng)建和測(cè)試發(fā)行版的基礎(chǔ)架構(gòu),并對(duì) Node.js 14 的工具鏈進(jìn)行必要的升級(jí)。

          你可以點(diǎn)擊這里查看 v14.0.0 版本的完整功能列表。

          JQuery 團(tuán)隊(duì)的核心開發(fā)者 Timmy Willison 在官網(wǎng)宣布了 jQuery 3.4.0,這距離上個(gè)版本 3.3.x 系列的推出已整整過去了一年多。

          官方表示這可能是 3.x 分支的最后一個(gè)小版本更新,接下來的工作重心將是 jQuery 4.0 大版本的更新。

          新版本特性

          1、針對(duì) .width 和 .height 的性能改進(jìn)

          在獲取和設(shè)置維度時(shí),在某些情況下,這可能會(huì)導(dǎo)致布局顛簸,這基本上意味著瀏覽器計(jì)算布局的次數(shù)超過了必要的次數(shù)。我們?cè)贗E以外的所有瀏覽器中修復(fù)了這個(gè)問題,這是無法避免的。

          2、支持 nonce 和 noodle

          為了支持通過.html和.append等方法添加腳本元素,jQuery將它們分開并附加新的腳本標(biāo)記來加載和執(zhí)行遠(yuǎn)程內(nèi)容。在這個(gè)過程中,諸如nonce和nomodule被忽略的屬性,但jQuery 3.4.0現(xiàn)在掛在它們上面。

          3、針對(duì) Radio 元素新增事件處理程序中的預(yù)期狀態(tài)

          在以下示例中,true第一次單擊該元素時(shí)記錄了該日志。我們修復(fù)它,以便checked在執(zhí)行事件處理程序之前更新屬性。

          代碼示例:

          var $radios=jQuery(".example");
          var $firstRadio=$radios.first();
          var firstCheckedState=$firstRadio.prop("checked");
          $radio.on("click", function() {
           // true in <3.4.0
           console.log($firstRadio.prop("checked")===firstCheckedState);
          });
          $radios.eq(1).click();
          

          4、針對(duì) Object.prototype pollution 問題的小修復(fù)

          Query 3.4.0在使用時(shí)包含一些非預(yù)期行為的修復(fù)jQuery.extend(true, {}, ...)。如果未過濾的源對(duì)象包含可枚舉__proto__屬性,則它可以擴(kuò)展本機(jī)Object.prototype。這個(gè)修復(fù)包含在jQuery 3.4.0中,但補(bǔ)丁差異存在以修補(bǔ)以前的jQuery版本。

          代碼示例:

          jQuery.extend(true, {},
           JSON.parse('{"__proto__": {"test": true}}')
          );
          console.log( "test" in {} ); // true
          

          5、棄用positional selectors and the sunset of Sizzle

          jQuery的基本API是選擇一些內(nèi)容,然后對(duì)所選內(nèi)容執(zhí)行某些操作。Sizzle,jQuery中的選擇器引擎,處理上半部分。它是一個(gè)快速有效的小引擎,為原生選擇器API querySelectorAll和其他原生JavaScript和CSS選擇器鋪平了道路。現(xiàn)在很多這些選擇器已經(jīng)進(jìn)入現(xiàn)代瀏覽器,現(xiàn)在幾乎是時(shí)候告別Sizzle了。但是為了在jQuery 4.0中刪除Sizzle,我們還需要?jiǎng)h除我們稱為位置選擇器的東西,它們是非標(biāo)準(zhǔn)選擇器。

          具體而言,jQuery的3.4.0被棄用:first,:last,:eq,:even,:odd,:lt,:gt,和:nth。當(dāng)我們刪除Sizzle時(shí),我們將用一個(gè)小包裝器替換它,querySelectorAll如果沒有更大的選擇器引擎,幾乎不可能重新實(shí)現(xiàn)這些選擇器。

          我們認(rèn)為這種權(quán)衡是值得的。請(qǐng)記住我們?nèi)匀粫?huì)支持的位置方法,如.first,.last和.eq。你可以用位置選擇器做任何事情,你可以用位置方法來做。無論如何,它們表現(xiàn)更好。

          升級(jí)

          如果從jQuery 3.0+升級(jí),應(yīng)該沒有兼容性問題。

          更新日志

          1、Ajax

          • 當(dāng)使用腳本傳輸允許自定義屬性(#3028,1f4375a3)
          • 修復(fù)IE11的getResponseHeader(key)(#3403,e0d94115)

          2、Core

          • 使用isAttached檢查元素的附件(662083ed)
          • 微小的效率修復(fù)可jQuery.extend / 1.3中(#4246)(#4245,4ffb1df8)
          • 保留在DOM操作與src屬性的腳本CSP的隨機(jī)數(shù)(#4323,00504037)
          • 在DOM操作中保留腳本上的CSP nonce(#3541,c7c2855e)
          • 支持通過隨機(jī)數(shù)通過jQuery.globalEval(#4278,5bdc85b8)
          • 識(shí)別陰影DOM在附件檢查(#3504,9b77def5)
          • 防止$ .extend(true,...)的Object.prototype污染(753d591a)

          3、CSS

          • 確保CSS變量不會(huì)折疊camel- vs kebab-cased名稱(f8c1e902)
          • 避免填滿jQuery.cssProps(#3986,2b5f5d5e)
          • 正確地檢測(cè)與非默認(rèn)縮放滾動(dòng)框支持(#4029,821bf343)
          • 不要自動(dòng)追加“PX”到CSS的變量(#4064)(#4063,75b77b48)
          • 跳過非元素道具動(dòng)畫的px- appending邏輯(f5e36bd8)
          • 除非必要,否則避免在寬度/高度吸氣劑中強(qiáng)制回流(#4322,a0abd15b)
          • 除非必要,否則不要在寬度/高度cssHook中讀取styles.position(#4185,354f6036)
          • 不要將“px”自動(dòng)附加到可能無單位的CSS網(wǎng)格屬性(#4007,f997241f)

          4、外形尺寸

          • 修復(fù)SVG上的計(jì)算外部寬度(#3964,e743cbd2)
          • 避免設(shè)置寬度/高度時(shí),取boxSizing -這避免了迫使在某些情況下回流(#3991,73d7e625)
          • 回落到offsetWidth /身高的邊界框在IE(#4102,315199c1)

          5、事件

          • 阻止來自雙擊焦點(diǎn)的leverageNative(fe5f04de)
          • 添加“代碼”屬性,事件對(duì)象(#3978,899c56f6)
          • 利用原生事件進(jìn)行聚焦/模糊/點(diǎn)擊; 傳播的附加數(shù)據(jù)(#1741,#3423,#3751,#4139,669f720e)
          • 尊重DOM操作中的腳本nomodule屬性(#4281,e4de8b46)
          • 恢復(fù)_evalUrl jQuery.ajax調(diào)用dataType:script(13de7c9e)
          • 僅評(píng)估HTTP成功的腳本src(#4126,c2026b11)

          精彩評(píng)論

          最后

          每天發(fā)布更多新鮮有含量的技術(shù)文章、總有一款適合你。

          快關(guān)注我、把我打包帶走、每天提醒你學(xué)習(xí)一手技術(shù)。


          主站蜘蛛池模板: 国产精品高清视亚洲一区二区| 国产在线精品一区二区中文 | 精品国产一区二区二三区在线观看| 色噜噜一区二区三区| 亚洲AV乱码一区二区三区林ゆな| 亚洲综合无码一区二区痴汉| 无码精品人妻一区二区三区漫画| 国产成人一区二区三区精品久久| 青青青国产精品一区二区| 乱人伦一区二区三区| 久久精品无码一区二区三区免费| 久久99精品波多结衣一区| 色妞AV永久一区二区国产AV | 日本一区二区不卡在线| 一区二区三区四区在线观看视频| 最新中文字幕一区| 好爽毛片一区二区三区四无码三飞| 亚洲电影一区二区| 无码成人一区二区| 无码成人一区二区| 99久久无码一区人妻a黑| 久久久精品人妻一区二区三区蜜桃| 免费无码一区二区三区蜜桃| 国产在线视频一区| 东京热人妻无码一区二区av| 在线日产精品一区| 亚洲AV无码一区二区三区人| 99久久精品国产一区二区成人 | 视频一区二区在线播放| 国产成人一区二区在线不卡| 波多野结衣在线观看一区二区三区| 日韩精品一区二区三区中文版| 国产麻豆剧果冻传媒一区 | 亚洲一区二区三区免费在线观看 | 久久国产一区二区三区| 久久久久久免费一区二区三区| 日本不卡一区二区视频a| 无码国产伦一区二区三区视频| 3d动漫精品一区视频在线观看| 日韩精品一区二区三区老鸭窝| 久久中文字幕无码一区二区|