国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Chrome DevTools中的現代Web調試

系統 瀏覽器
架構

大家好,我是 CUGGZ。

如今,開發者通常會利用框架、構建工具和編譯器從更高級別的角度來編寫 Web 應用程序。在 DevTools 中調試或分析 Web 應用程序時,目前能查看和調試的都是已經編譯的代碼,而不是實際編寫的代碼。很多時候,我們并不想調試已經編譯、壓縮后的代碼,而是想調試原始代碼:

使用 TypeScript 時,不想調試編譯之后的 JavaScript,而是想調試原始的 TypeScript 代碼;

當使用 Angular、JSX 之類的模板時,并不希望調試生成的 DOM。而是調試自己編寫的組件。

總而言之,我們可能希望在編寫自己的代碼時對其進行調試。雖然 source maps 已經在一定程度上縮小了這一差距,但 Chrome DevTools 和生態系統可以在這方面做更多的事情。下面就來看一看吧!

1. Deployed 和 Authored 代碼

目前,在 Sources 面板中導航文件樹時,可以看到已編譯(通常已壓縮)包的內容,這些是瀏覽器下載和運行的實際文件。DevTools 將其稱為 Deployed 代碼。

圖片

這在調試時可能并不是很方便,我們希望查看和調試自己編寫的代碼,而不是打包完的代碼。為了彌補這一點,現在可以通過樹來顯示我們編寫代碼(這被稱為 Authored 代碼)。這使得樹更接近于在 IDE 中看到的源文件,并且這些文件現在與 Deployed 代碼是分離的:

圖片

可以在 Chrome DevTools 中開啟此選項:DevTools > Settings > Experiments > Group sources into Authored and Deployed trees.

圖片

注:Chrome DevTools 團隊計劃很快默認啟用此實驗選項。

2. Just my code

注:這是 Chrome Canary 106 版本的預覽功能。?

當使用依賴項或在框架之上構建應用時,第三方文件可能會阻礙我們的調試。多數時候,我們只想調試自己編寫的代碼,而不是隱藏在 node_modules 文件中的某些第三方庫的代碼。

為了彌補這一點,DevTools 默認啟用了一個額外的設置:自動將已知的第三方腳本添加到忽略列表。可以在 DevTools > Settings > Ignore List 中找到它。

圖片

啟用此設置后,DevTools 會隱藏框架或構建工具標記為忽略的任何文件或文件夾。作為開發者,我們不需要做任何事情來啟用這種新的行為,具體實施取決于框架。比如,從 Angular v14.1.0 開始,其 node_modules 和 webpack 文件的內容已被標記為忽略。因此,這些文件夾、其中的文件等都不會出現在 DevTools 的各個位置。

(1)在堆棧跟蹤中

這些被忽略的文件不再出現在堆棧跟蹤中,現在可以看到更多相關的堆棧跟蹤信息:

圖片

如果想查看堆棧跟蹤的所有調用幀,可以單擊顯示更多幀鏈接。

這同樣適用于在調試和單步執行代碼時看到的調用堆棧。當框架或打包程序通知 DevTools 的第三方腳本時,DevTools 會自動隱藏所有不相關的調用框架并在單步調試時跳過任何被忽略的代碼。

圖片

(2)在文件樹中

要想在 Sources 面板的 Authored 代碼樹中隱藏忽略的文件和文件夾,需要在 DevTools 的 Settings > Experiments 中選中 Hide ignore-listed code in sources tree view。

圖片

在示例的 Angular 項目中,node_modules 和 webpack 文件夾現在已經隱藏了:

圖片

(3)在快速打開菜單中

被忽略的代碼不僅可以在文件樹中隱藏,還可以在“快速打開”菜單(快捷鍵:Control+P (Linux/Windows) 或 Command+P (Mac))中隱藏。

圖片

3. 對堆棧跟蹤的改進

Chrome DevTools 對堆棧跟蹤引入了更多改進。

(1)Linked 堆棧跟蹤

當某些操作是異步觸發時,DevTools 中的堆棧跟蹤目前只能顯示部分情況。例如,在 framework.js? 文件中有一個簡單的 scheduler:

function makeScheduler() {
const tasks = [];

return {
schedule(f) {
tasks.push({ f });
},

work() {
while (tasks.length) {
const { f } = tasks.shift();
f();
}
},
};
}

const scheduler = makeScheduler();

function loop() {
scheduler.work();
requestAnimationFrame(loop);
};

loop();

在 example.js? 文件中使用 scheduler:

function someTask() {
console.trace("done!");
}

function businessLogic() {
scheduler.schedule(someTask);
}

businessLogic();

在 someTask? 方法中添加斷點或檢查控制臺中打印的跟蹤時,看不到任何與 businessLogic() 調用相關的信息:

圖片

在堆棧跟蹤中也看不到面包屑來幫助我們找出導致該任務的事件之間的因果關系。多虧了一個名為“Async Stack Tagging”的新功能,通過將異步代碼的兩個部分鏈接在一起,解決了這個問題。

Async Stack Tagging API 引入了一個名為 console.createTask() 的新控制臺方法。API 簽名如下:

interface Console {
createTask(name: string): Task;
}

interface Task {
run<T>(f: () => T): T;
}

console.createTask()? 調用返回一個 Task 實例,可以使用它來運行任務的內容 f。

// 任務創建
const task = console.createTask(name);

// 任務執行
task.run(f);

該任務形成了創建它的上下文和正在執行的異步函數的上下文之間的鏈接。

注:Async stack tagging API 將在 Chrome 106 中可用。

把它應用到 makeScheduler 函數中,代碼變為了這樣:

function makeScheduler() {
const tasks = [];

return {
schedule(f) {
const task = console.createTask(f.name);
tasks.push({ task, f });
},

work() {
while (tasks.length) {
const { task, f } = tasks.shift();
task.run(f); // instead of f();
}
},
};
}

有了它,Chrome DevTools 現在能夠更好的顯示堆棧跟蹤:

圖片

注意,businessLogic()? 現在是如何包含在堆棧跟蹤中的。不僅如此,該任務的名稱為 someTask? 而不是像以前那樣通用的 requestAnimationFrame。

(2)友好的調用幀

在構建項目時,框架通常會從各種模板語言生成代碼,例如 Angular 或 JSX 模板,它們將看起來像 HTML 的代碼轉換為最終在瀏覽器中運行的純 JavaScript。有時,這些生成的函數被命名為不太友好的名稱——要么是壓縮后的單字母名稱,要么是一些晦澀或不熟悉的名稱。

在示例項目中,包含一個名稱:AppComponent_Template_app_button_handleClick_1_listener,可以在堆棧跟蹤中看到它:

圖片

為了解決這個問題,Chrome DevTools 現在支持通過 source maps 重命名這些函數。作為開發者,我們無需執行任何操作即可啟用此功能,具體實施取決于框架。

通過本文列出來的新增功能,Chrome DevTools 可以為我們提供更好的調試體驗!Chrome 團隊還想探索更多領域,特別是如何改善 DevTools 中的分析體驗。期待 Chrome DevTools 未來可以帶來更友好的調試體驗!

參考:https://developer.chrome.com/en/blog/devtools-modern-web-debugging/

責任編輯:武曉燕 來源: 前端充電寶
相關推薦

2017-10-09 10:04:48

JavaScriptChrome DevT調試

2022-07-29 09:01:20

Chrome試源代碼調試技巧

2017-09-12 15:11:12

Chrome

2022-08-15 20:48:28

Chrome安卓網頁

2022-08-21 14:05:54

調試工具CDP

2022-08-26 08:17:32

Sidekick開源

2022-09-23 15:01:00

JavaScripChrome技巧

2025-03-03 00:00:00

Chrome工具前端

2022-08-23 23:19:12

ChromeCoverage

2022-10-28 19:19:11

ChromeNetwork網絡

2025-07-11 04:00:00

2022-11-10 09:00:41

2020-05-27 11:30:54

Chrome DevT前端命令

2023-07-10 12:11:50

TypeScripChrome識別

2022-04-27 20:52:48

JSChrome元素

2021-05-11 10:03:06

性能優化工具Performance

2021-12-17 00:10:00

ChromeDevtools功能

2021-05-21 10:24:52

AngularDevTools擴展

2021-12-25 22:30:27

Chrome DevTJavaScript調試工具

2011-08-10 13:32:24

Web
點贊
收藏

51CTO技術棧公眾號

国产在线播放一区二区| 99精品在线观看视频| 日韩精品欧美专区| 亚洲一区二区三区小说| 国产精品传媒麻豆hd| 自拍偷拍一区二区三区| 精品久久在线播放| 麻豆一区二区三| 亚洲精品国产嫩草在线观看| 久久国产精品免费观看| 日韩视频在线免费观看| 激情深爱一区二区| 大香伊人久久精品一区二区| 理论片播放午夜国外| 国产精华一区二区三区| 国产一区二区三区在线观看网站| 最新久久zyz资源站| 精品一区二区三区香蕉蜜桃| 重囗味另类老妇506070| 色综合一区二区日本韩国亚洲 | 色欧美片视频在线观看| 免费日韩成人| 情趣视频网站在线免费观看| 国产成人精品久久二区二区91| 欧美午夜片在线看| 一区二区三区精品视频| 韩国精品在线观看| 欧美日韩亚洲一区| 日韩成人av在线资源| 色尼玛亚洲综合影院| 黄色网址视频在线观看| 日本午夜激情视频| 中文字幕中文字幕99| 国产不卡视频在线| 色噜噜久久综合伊人一本| 欧美成人福利视频| 亚洲国产精品一区二区尤物区| 久久久99精品久久| 99热精品国产| 国产成人免费视频一区| 国产一区二区三区免费在线观看| 久久久亚洲人| 麻豆视频一区二区| 日韩电影一区二区三区四区| 99久久婷婷| 91视频久久| 国产一区二区三区网| 五月综合久久| 日韩一区二区三区免费播放| 欧美成人基地| 欧美大片网站| 国产精品国产| 日韩午夜电影网| 波多野结衣在线观看一区二区三区| 欧美综合在线视频观看| 午夜国产一区| 久久精品国产免费| 99久久99久久精品国产片果冻| av不卡在线播放| 都市激情亚洲欧美| 国产suv精品一区二区三区88区| 久久经典综合| 国产免费av一区二区三区| 九色成人搞黄网站| 欧美写真视频一区| 91高潮精品免费porn| 韩国一区二区在线观看| a毛片在线播放| 国产精品99久久久久久久久久久久 | 国产精品一区二区久激情瑜伽 | 色综合视频在线观看| 日韩在线一二三区| 国产视频欧美| 亚洲女人av| 亚洲精华国产欧美| 亚洲欧洲日韩在线| 亚洲午夜色婷婷在线| 成人激情av| 激情丁香在线| 高清日韩欧美| xnxx国产精品| 日韩高清中文字幕| 久久99精品久久久久久久久久| 国产黄在线播放| 久久不射2019中文字幕| 欧美精选午夜久久久乱码6080| 欧美最近摘花xxxx摘花| 国产精品亚洲a| 第一福利在线视频| 激情综合网址| 欧美丝袜丝交足nylons图片| 欧美在线激情网| heyzo视频在线播放| 高潮久久久久久久久久久久久久| 91热门视频在线观看| 欧美午夜电影网| 欧美最顶级的aⅴ艳星| 特级全黄一级毛片| 91精品国产自产拍在线观看蜜| 欧美日韩国产在线| 国产suv精品一区二区三区88区| 色偷偷免费视频| 五月久久久综合一区二区小说| 亚洲国产成人av好男人在线观看| 国语自产偷拍精品视频偷| 在线观看av日韩| 在线精品自拍| 欧美三级韩国三级日本三斤| 成人免费在线网| 三上悠亚亚洲一区| 国产suv一区二区三区88区| 在线日韩欧美视频| 黄色免费看网站| 夜夜嗨网站十八久久| 亚洲国产精品久久91精品| 少妇av一区二区三区无码| 五月天久久网站| 亚洲色图一区二区| 欧美一区二区三区精品| 中文字幕中文字幕一区三区| 日韩第二十一页| 亚洲精品va在线观看| 久久国产精品99久久久久久丝袜 | 麻豆91av| 涩爱av色老久久精品偷偷鲁| 亚洲成人激情在线观看| 成人黄网大全在线观看| 超碰在线cao| av欧美精品.com| 正在播放一区| 久久国产主播| 国内精品久久国产| 久久网站免费观看| 国产精品xxxxx| 久久伊人影院| 深夜福利亚洲导航| 青青久久精品| 最近2019年日本中文免费字幕| 碰碰在线视频| 日韩成人在线播放| 91在线超碰| 亚洲欧洲自拍偷拍| 久久毛片亚洲| 亚洲精品99999| 成人一级福利| 中文字幕一精品亚洲无线一区 | 精品在线观看一区二区| 真实国产乱子伦精品一区二区三区| 91亚洲国产成人精品一区二三| 最新黄色av网站| aaa亚洲精品| 97中文字幕| 亚洲综合视频网| 久久精品a一级国产免视看成人| 欧美日本在线视频| 在线毛片观看| 欧美激情第99页| 国产亚洲精品美女久久久久久久久久| 国产精品视频一区二区高潮| 亚洲国产精品第一区二区| 可以免费看的黄色网址| 2020国产精品自拍| 真不卡电影网| 日韩午夜精品视频| 亚洲欧美一级| 国产精品99久久久久久www| 自拍偷拍欧美专区| 欧美中文娱乐网| 北岛玲一区二区三区四区| 成色在线视频| 欧美一级片免费看| 免费一级欧美片在线观看网站| 成人久久18免费网站图片| 精品一区二区综合| 满满都是荷尔蒙韩剧在线观看| 亚洲精品一区在线观看| 免费看久久久| 亚洲精品第一区二区三区| 国产精品欧美一区二区三区| 日本最黄一级片免费在线| 久久久国产精品免费| 亚洲手机视频| 日韩欧美黄色大片| 精品国产一区二区三区av性色| 国产一区二区三区不卡av| 欧美大香线蕉线伊人久久国产精品| 久久精品无码一区二区三区| av免费在线免费| 国产精品久久久久久久久久小说| 日韩专区中文字幕一区二区| 天堂在线观看一卡二卡三卡四卡| 日韩精品中文字幕有码专区| 欧美电影《睫毛膏》| 国产成人久久婷婷精品流白浆| 欧美精品丝袜久久久中文字幕| 加勒比日本影视| 亚洲国产精品系列| 亚洲茄子视频| 日本大臀精品| 国产精品小说在线|