一些加速我除蟲的 Devtool 小技巧

Eason Lin
5 min readApr 17, 2022

--

Photo by Justin Lauria on Unsplash

前陣子一直斷斷續續地讀,直到最近終於把你所不知道的必學前端Debug技巧給讀完了。作為前端,我原本是一個不怎麼會有效率地使用 Devtool 的人,這本書讓我對它有了更進一步的了解,也將許多書中提及的技巧運用在了工作上,而它們也確實大幅提升了我除蟲及開發的效率,透過這篇文和大家分享一些非常簡單易用的小技巧。

$0

我們在畫面上抓取元素時,通常會使用 Elements 的 Inspect 功能:

如果需要切換到 Console 透過 JS 對元素進行操作時,以往我可能會下 querySelector 去取得:

document.querySelector('.col:first-child .card')

然而,其實在 Inspect 到元素時,就能在 Console 直接透過 $0 取得該元素:

Force state

在開發時,我們可能會透過虛擬類別(pseudo class)讓元素在特殊狀態下呈現不同的樣式。例如:

<style>
.my-button {
background-color: blue;
color: #fff;
}
.my-button:hover {
background-color: navy;
}
</style>
<button class="my-button">Hover Me!</button>

以往我會直接到 CSS 裡改,並確認是否調整為預期的樣式(你沒看錯,以往我是這樣做的…),而在 Elements 中其實可以對元素進行 Force state,例如:

選擇 Force state > :hover 後,就能看到元素 hover 後的樣式:

便可直接在 devtool 對其進行調整及測試。

console.table

以往需要在 console 輸出 array of objects 的資料時,我可能會使用 console.log:

console.log(myArray);

這樣在 console 上跑出的會是一個需要我們手動去展開的資料:

一個個去展開他們自然沒什麼問題。但如果使用 console.table:

就會發現它很貼心地都幫我們把資料整理好了!

Breakpoint

以往針對 JS 除蟲時,我最常使用的是「將疑似有問題的資料一一 log 出來」,這會導致除蟲時的效率低落。在 Source 面板中,有一個非常好用的功能:斷點。

白話地講,當我們對特定一行程式碼下斷點後,瀏覽器在執行到該行時會直接暫停,讓我們能快速還原事發現場。下面是一段有問題的程式碼:

let filteredData = [];
fetch("https://jsonplaceholder.typicode.com/posts")
.then((res) => {
return res.json();
})
.then((data) => {
filteredData = data.filter((item) => item.user.id === 1);
});

在發現問題後,可以直接對該行下斷點:

重整後,程式碼在執行到斷點時便會暫停,便能在 scope 中找到該變數:

也可以直接 hover 到程式碼區塊的變數,看見它的值:

便可快速找到問題進行修正。

模擬低網速

還記得以前曾經有個純 CSR 透過 API 取資料的專案,當時有個問題回報的使用者是在網路不好的情況才會碰到,當時我的做法是透過一些外部條件讓電腦的網路變得非常慢。但其實 Devtool 本身就有限速的功能:

Copy as fetch

有時候在 API 串接上可能因為一些原因失效,這時候如果想要快速測試已經串接的 API,可以在 Networks 找到該 API,並選擇 Copy as fetch:

將其貼到 Console,會是一個可以直接發送的 fetch 程式碼,便可透過修改其參數快速進行測試。

結語

以上就是一些我以前不會,現在常用、也都能很有效幫助到我的Devtool 小技巧,其實還有非常多好用的的小技巧,礙於篇幅就不一一列出。希望這個簡短的分享可以幫助到路過的你,如果內文有任何錯誤,也請不吝指出,謝謝大家。

References:

https://ithelp.ithome.com.tw/users/20129636/ironman/3382?sc=iThelpR

https://www.books.com.tw/products/0010904896?loc=P_0003_067

--

--

Eason Lin
Eason Lin

Written by Eason Lin

Frontend Web Developer | Books

No responses yet