DevTools(Chrome 85)的新功能

2021-03-02 前端先鋒
// 每日前端夜話 第371篇
// 正文共:2700 字
// 預計閱讀時間:10 分鐘

DevTools 是開發和測試 Web 應用時最有用的工具之一。在Chrome 85 中,DevTools 做了一些改進,例如:

Network 面板的 Timing 選項卡現在增添了 respondWith 事件,該事件記錄了 service worker fetch 事件處理運行 promise 所達成的時間(issue #1066579[1])在 Console settings 中,Group similar 現在適用於重複的消息,並且控制臺設置中的 Selected context only 設置現在仍然有效 (issues #1082963[2] 和 #1055875[3])現在 Manifest 面板會在應用圖標尺寸不正確或者不是正方形時顯示應用快捷方式的警告 (issue #955497[4])計算窗格在跨多個視口時一致顯示 (issue #1073899[5])

這些都是有用的更改,但是在本文中,我將回顧與樣式編輯和新的 JavaScript 功能相關的更改,以及 SourcePerformance 面板中的改進。

在你閱讀本文時,很可能 Chrome 85 將會成為主流的穩定版本。在撰寫本文時(2020年7月30 日),你只能通過下載 Chrome 的開發版本[6]來獲得 Chrome 85。你可以在 Chrome 發行渠道[7] 頁面上了解有關 Chrome 發行版本的更多信息。

CSS-in-JS 框架的樣式編輯

通過即時編輯代碼或樣式來實時查看是 DevTools 最有用的功能之一。

使用 CSS 樣式時,可以選擇用 CSS 對象模型[8](CSSOM)API 以編程的方式操作 CSS 規則:

const style = document.createElement('style');
document.head.appendChild(style);
style.sheet.insertRule('#myDiv {background-color: blue; color: yellow}');

但是,DevTools 不允許你編輯以這種方式創建的樣式。

不過這在 Chrome 85 中已經得到改進[9]。從此版本開始,你可以編輯用 CSSOM API 構建的樣式,尤其是在使用 CSSStyleSheet.insertRule、CSSStyleSheet.deleteRule、CSSStyleDeclaration.setProperty 和  CSSStyleDeclaration.removeProperty 時。

這也適用於 LitElement 之類的庫或 React Native for web。

即使在打開 DevTools 之後插入樣式,這些樣式也是可編輯的,這也適用於 Constructable Stylesheets[10],目前僅在 Chrome 中可用[11]。

可構造樣式表允許你通過調用 CSSStyleSheet() 構造函數,用 replace()和 `replaceSync()`[12] 添加和更新樣式表規則來創建樣式表。

const sheet = new CSSStyleSheet();
sheet.replaceSync('#myDiv {background-color: blue; color: yellow}');
document.adoptedStyleSheets = [sheet];

支持新的 JavaScript 功能

Chrome 使用 Acorn[13] 在 DevTools 控制臺中解析 JavaScript。

在 Chrome 85 中,[Acorn 已更新至版本 7.3.0[14],除了其他改進外,還增加了對可選鏈運算符的支持( ?. )。

通過使用可選的鏈運算符[15],就不必像下面這樣寫代碼:

if (user && user.name && user.name.last)
 lastName = user.name.last.toUpperCase();

你可以這樣寫:

lastName = user?.name?.last?.toUpperCase();

但是直到 Chrome 84,該操作符的自動完成功能仍不被支持:

chrome 84中的可選鏈

現在,控制臺中的屬性自動完成功能可以與此操作符(user?.)一起使用,就像你使用 user. 或 user[ 一樣:

chrome 85 中的可選鏈

其他兩個更改與 sources 面板中的語法突出顯示有關。

在 Chrome 84 之前,私有欄位和方法[16]顯示為白色文本。在某些情況下,甚至該行的其餘部分也顯示為白色:

chrome 85之前的私有欄位

sources 面板使用 CodeMirror[17] 顯示代碼。

在 Chrome 85 中,CodeMirror 已更新至版本 5.54.0[18] 此版本改進了對私有屬性和類欄位的解析[19]:

chrome 85之後的私有欄位

最後一個關於 JavaScript 新功能的改進是關於 nullish 合併運算符[20]。

在 Chrome 85 之前的版本中,當代碼包含以下運算符時,代碼格式會被破壞:

Chrome 85之前的 nullish 合併

但是現在它被修正了[21],並且格式可以正常使用:

chrome 85之後 nullish 的合併對 Sources  面板進行更多更改

**Sources ** 面板還有其他有用的更改。

現在,我們有了即使沒有選擇任何內容,也可以在編輯器中複製或剪切當前行的功能[22]。

只需要把光標放在要複製或剪切的行的末尾,然後按相應的鍵盤快捷鍵:

將光標放在要複製或剪切的行的末尾,然後按相應的鍵盤快捷鍵

另一個改進是,如果你使用 WebAssembly 文件,則編輯器會顯示 Wasm 模塊字節碼(十六進位)偏移量[23] :

編輯器現在顯示字節碼(十六進位)偏移量

最後是斷點,條件斷點和日誌斷點的新圖標[24]。

他們的樣子如下:

chrome 85之前的斷點

同樣,這就是他們在深色模式下的樣子:

深色模式下的斷點

現在它們更加豐富多彩:

chrome 85中的多色斷點

我認為,這提高了斷點圖標的可讀性,尤其是在啟用暗模式時:

深色模式下的Chrome 85斷點Performance 面板更新

DevTools 的 Performance 面板中有兩項重要更改。

關於第一個腳本,直到 Chrome 84,如果未緩存給定腳本,DevTools 不會顯示緩存信息:

編譯之前

現在,緩存信息總是顯示在摘要標籤中[25],顯示了未進行緩存的原因:

編譯之後

第二個變化與錄製規則中顯示的時間有關。

在以前的版本中,時間是根據錄製的開始時間顯示的:

記錄規則中顯示的時間

請注意,第二頁的 FCP 顯示的時間戳為 8907 毫秒。這是從錄製開始到事件發生的時間。

現在,時間與用戶導航的位置有關[26]:

chrome 85中的時間戳

在上面的例子中,第二頁 FCP 的時間戳為 901.1 毫秒,即該事件在頁面加載後發生的時間。

總結

在本文中,我們瀏覽了 Chrome 85中 DevTools 的最重要更改。但是我沒有深入探討本文開頭所提到的四項改進,但是你可以在這裡查看相關的內容[27]。

最後,請記住,你可以通過下載Chrome Canary[28] 或Chrome 開發版[29]來使用最新的 DevTools 功能。

作者:Esteban Herrera
翻譯:瘋狂的技術宅
原文:https://blog.logrocket.com/whats-new-in-devtools-chrome-85/


精彩文章回顧,點擊直達


Reference[1]

#1066579: https://crbug.com/1066579

[2]

#1082963: https://crbug.com/1082963

[3]

#1055875: https://crbug.com/1055875

[4]

#955497: https://crbug.com/955497

[5]

#1073899: https://crbug.com/1073899

[6]

Chrome 的開發版本: https://www.google.com/chrome/dev/

[7]

Chrome 發行渠道: http://www.chromium.org/getting-involved/dev-channel

[8]

CSS 對象模型: https://drafts.csswg.org/cssom/

[9]

不過這在 Chrome 85 中已經得到改進: https://bugs.chromium.org/p/chromium/issues/detail?id=946975

[10]

Constructable Stylesheets: https://developers.google.com/web/updates/2019/02/constructable-stylesheets

[11]

僅在 Chrome 中可用: https://chromestatus.com/feature/5394843094220800

[12]

replaceSync(): https://wicg.github.io/construct-stylesheets/#dom-cssstylesheet-replacesync

[13]

Acorn: https://github.com/acornjs/acorn

[14]

[Acorn 已更新至版本 7.3.0: https://bugs.chromium.org/p/chromium/issues/detail?id=1083214

[15]

可選的鏈運算符: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining

[16]

私有欄位和方法: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Classes/Private_class_fields

[17]

CodeMirror: https://codemirror.net/

[18]

CodeMirror 已更新至版本 5.54.0: https://bugs.chromium.org/p/chromium/issues/detail?id=1073903

[19]

改進了對私有屬性和類欄位的解析: https://js.libhunt.com/codemirror-changelog/5.54.0

[20]

nullish 合併運算符: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator

[21]

它被修正了: https://bugs.chromium.org/p/chromium/issues/detail?id=1083797

[22]

即使沒有選擇任何內容,也可以在編輯器中複製或剪切當前行的功能: https://bugs.chromium.org/p/chromium/issues/detail?id=800028

[23]

顯示 Wasm 模塊字節碼(十六進位)偏移量: https://bugs.chromium.org/p/chromium/issues/detail?id=1071432

[24]

斷點,條件斷點和日誌斷點的新圖標: https://bugs.chromium.org/p/chromium/issues/detail?id=1041830

[25]

總是顯示在摘要標籤中: https://bugs.chromium.org/p/chromium/issues/detail?id=912581

[26]

時間與用戶導航的位置有關: https://bugs.chromium.org/p/chromium/issues/detail?id=974550

[27]

查看相關的內容: https://developers.google.com/web/updates/2020/06/devtools

[28]

Chrome Canary: https://www.google.com/chrome/canary/

[29]

Chrome 開發版: https://www.google.com/chrome/dev/

相關焦點

  • Chrome Devtools 高級調試指南(新)
    類似的,使用DevTools的工作區設置持久化,將本地的文件夾映射到網絡,在chrome開發者功能裡面對css 樣式的修改,都會直接改動本地文件,頁面重新加載,使用的資源也是本地資源,達到持久化的效果。
  • Chrome DevTools 全攻略!助力高效開發
    李華西,微醫雲服務團隊前端開發工程師,喜歡瞎折騰,典型貓奴Console 面板此章節請打開 justwe7.github.io/devtools/console/console.html 一起食用一方面用來記錄頁面在執行過程中的信息(一般通過各種 console 語句來實現),另一方面用來當做 shell 窗口來執行腳本以及與頁面文檔、DevTools 等進行交互
  • Chrome 測試新功能:強制任何網站進入暗黑模式
    Google 正在 Chrome 78 Canary 版本中測試一項新功能,該功能將為任何網站提供黑暗模式,無論它們本身是否支持。新功能名為「強制 Web 內容暗黑模式」(Force Dark Mode for Web Contents),能夠通過應用各種濾色器和圖像反轉,將任何網站轉換為暗黑模式。啟用此功能後,Chrome 會讓用戶選擇各種設置,以確定瀏覽器如何強制在網站上使用黑暗模式主題。
  • 谷歌Chrome安卓版新功能,可自身更新不再依賴應用商店
    谷歌的Chrome安卓版更新加入了一個新功能,可以實現直接自身升級更新,而無需依賴谷歌的Play Store。   安卓版的谷歌Chrome Canary版本最近添加了一個名為Enable Google Play Inline Update Flow的新功能,如果啟用該功能,則不需要前往
  • Chrome 85 穩定版發布,頁面加載速度提升 10%
    谷歌今日發布了最新穩定版 Chrome 85。此版本將頁面加載速度提高了 10%,並帶來了許多標籤頁方面的改進,以及提供了一系列開發者功能。可直接使用 Chrome 內置更新程序升級或從 Chrome 官網下載。
  • [圖]新功能Chrome Actions:直接在地址欄執行清理緩存等操作
    在引入的新功能中就包括「Chrome Actions」功能,能夠讓你在不訪問隱私和安全設置的情況下直接在地址欄上進行操作。訪問 chrome://flags 頁面3. 搜索「Omnibox」,然後啟用「Omnibox suggestion button row」和「Omnibox Pedal Suggestions」
  • Chrome DevTools中的這些騷操作,你都知道嗎?
    (給前端大全加星標,提升前端技能)作者:前端森林 公號 / 前端森林(本文來自作者投稿)引言 🏂作為開發人員,平時用的最多的就是Chrome devtoo大家平時用的最多的Chrome 主題可能就是白色/黑色這兩種了,但用的久了,難免想嘗試像IDE一樣切換主題。
  • Chrome 調試工具奇淫技 - OSCHINA - 中文開源技術交流社區
    某個元素最終具體使用的字體 setting,devtools中的setting,支持在DevTools打開時強制清除緩存,記錄AJAX,打開source map,增刪改模擬器等等devtools中的settingAdd Folder to Workspace,在Source面板下,右鍵選擇Add Folder to Workspace,之後就可以直接編輯該目錄下的任何文件
  • 谷歌瀏覽器Google Chrome
    chrome瀏覽器下載手機版是專為Android設計的,不僅可為用戶量身推薦用戶所關注的新聞報導,還有快速連結迅速指向用戶所收藏的網站和下載的內容,甚至還內置了Google搜索和Google翻譯。立即下載這個chrome瀏覽器下載安卓版,在您的所有設備上享受與電腦體驗一致的chrome瀏覽器下載。谷歌瀏覽器下載手機版的特點是簡潔、快速。
  • 搶先體驗,開啟Chrome 87的隱藏功能!
    這次添加了一個非常實用的新功能,需要一些簡單的操作才能開啟Chrome這個隱藏新功能。例如我們日常使用中經常會遇到下面這種情況,有時候打開的頁面太多,產生了太多標籤。就很煩,感覺很亂,接下來教你們開啟標籤自動分組功能在地址欄輸入: chrome://flags/#tab-groups-auto-create將選項改為Enabled並重啟瀏覽器。
  • Chrome 79 發布 - OSCHINA - 中文開源技術交流社區
    此版本提供了安全性和錯誤修復,還具有新功能,例如對密碼檢查工具的內置支持,通過安全瀏覽 API 實時將惡意網站列入黑名單,可預防網絡釣魚的常規可用性,禁止加載 HTTPS 「混合內容」,對 tab freezing 的支持,Chrome Sync 配置文件部分的新 UI ,以及對後退緩存機制的支持。
  • Chrome Labs可讓您在瀏覽器中測試功能
    Google正在其Chrome瀏覽器中測試一項備受期待的新功能。稱為Chrome Labs的新穎性應該有助於使用快捷方式以實用的方式測試程序的實驗功能。以前,實驗性功能只能從瀏覽器的「標籤」標籤訪問,這對於大多數用戶而言並不直觀。
  • Chrome瀏覽器現有的觸摸搜索功能怎樣出現 觸摸搜索是什麼
    我們不確定這項新功能是否會與舊的「觸摸搜索」功能一起繼續存在,或者是否還有進一步的改進。現在,不同的詞帶來了不同的事物,其中一些具有更籠統的描述,另一些具有完整的定義。當您選擇單詞時,新功能就像在Kindle設備上發生的一樣。我們也不確定這將推廣到什麼程度。現在可以在穩定的Android版Chrome瀏覽器(v83.0.4103.106)上為我使用。
  • IE插件Chrome Frame公開測試
    Google表示,下載使用Chrome Frame插件後,你可以獲得更快的網頁響應體驗(根據Sunspider JavaScript基準測試,安裝Chrome Frame後IE的速度有顯著提升,IE8在安裝該插件後比IE8自身快10倍左右);Chrome Frame的開放技術使得網站可以為用戶提供更多新功能;最重要的一點,用戶可以像從前一樣上網衝浪,Chrome Frame在瀏覽器後臺起作用
  • 實例:如何將Chrome Extension遷移到Firefox上
    因為這個擴展的功能符合我的需求,所以我沒有積極地維護或增加新功能。不過,我知道 Firefox 要以 WebExtension API 取代傳統的 Add-on SDK。因此,在 WebExtension API 變成全面可用以前,我便把 FocusBlocker 改成 Chrome 擴展功能的格式,但一時還來不及再把它移植到 Firefox。
  • Google出品 IE插件Chrome Frame正式發布
    — 使用更多高級功能通過Google瀏覽器內嵌框架,網站可向用戶提供基於開放技術的新功能。— 不會改變用戶原來的上網方式Google瀏覽器內嵌框架在瀏覽器後臺起作用,用戶絲毫無需改變之前的瀏覽習慣。Google瀏覽器內嵌框架官方下載:http://www.google.com/chromeframe/
  • 新的Chrome 版本將允許你阻止所有 Cookie
    不過 Canary 上發布的許多新功能通常都在經過全面測試後才能在 Chrome 中使用。在 Chrome Canary 中阻止 CookieAndroid 版的 Canary 中新的 cookie 用戶界面為用戶提供了四個控制項來管理 cookie,而不僅僅是 Chrome 穩定版中當前提供的四個控制項。
  • Android Chrome瀏覽器通過開源平臺A-Frame和ARCore獲得WebXR支持
    根據發布的文檔,用戶需要在chrome:// flags實驗設置中啟用WebXR AR模塊,然後重新啟動瀏覽器以應用設置。 使用1.0.3版或更高版本的A-Frame構建的AR體驗會自動檢測到AR模塊的存在,並顯示一個AR按鈕以啟動該體驗。 開發人員Marc Heller和Gabriel Martins也通過Twitter分享了自己的實驗。
  • 谷歌瀏覽器Google Chrome 4.0中文版下載
    Chrome 4.0的一個重大的改進是增加瀏覽器擴展系統,使得用戶可以通過擴展系統獲得1500多個新功能。用戶可以到Chrome的擴展庫中搜尋擴展,安裝只需花費幾秒鐘的時間,卸載也同樣輕鬆。書籤同步功能則允許在不同電腦上同步Chrome瀏覽器的書籤,同步時需要使用Google帳號登錄,同步的書籤數據會保存在用戶的Google Docs的一個文件夾中。