「神器」Chrome開發者工具使用教程

「神器」Chrome開發者工具使用教程

對於每個前端開發者來說,除了F5和Ctrl C+V (大霧) 之外,用的最多的恐怕就是F12 Chrome開發者工具了。對於這個工具,相信很多前端同學都瞭解不少使用的技巧,但是系統地學習過它的人卻不多,今天咱們就一起完整地學習一下它的功能和使用方法,你也許會發現很多之前“用錯”的工具呢。

本文中採用的示例和截圖,來自於葡萄城前端表格產品SpreadJS,大家手邊如果沒有相關環境也不影響學習,我們今天的主題還是Chrome 開發者工具。

首先開啟谷歌瀏覽器,進入SpreadJS線上表格編輯器示例。透過F12(快捷鍵:Ctrl+Shift+I 或者Cmd+Shift+I )或者透過右鍵選單項的“檢查“選單項來開啟開發者工具。在開發者工具中,最核心的功能就是功能面板。如下圖所示,包括了選擇元素、裝置模式以及元素、控制檯、原始碼等。

元素:

用於檢視網頁中的html結構與css樣式 ;

控制檯:

瀏覽器中輸入控制檯資訊,js指令碼執行過程中,輸出執行狀態可以在控制檯檢視;

原始碼:

原始碼與靜態資源,進行網站原始碼的除錯、檢視、編輯;

網路:

每一個網站都有後臺web伺服器,網站前端與伺服器http互動過程中,可以檢視網路日誌,可以檢視除錯;

效能:

分析網站效能狀態,js指令碼執行效能、網頁渲染效能、 後端請求效能;

記憶體:

當前網頁記憶體情況,是否存在記憶體洩漏;

應用:

檢視網頁的快取資訊,如cookie、loocalStroage等;

「神器」Chrome開發者工具使用教程

滑鼠點選圖示後變為藍色背景。此時將滑鼠移至網頁中,會發現滑鼠移到某個頁面元素上時,右側開發者工具”元素”面板會高亮對應dom結構。

「神器」Chrome開發者工具使用教程

滑鼠點選圖示啟用瀏覽器模擬器。

將滑鼠移到裝置上可檢視圓形“觸控”游標。這將對基於觸控的 JavaScript 事件( 如touchstart,touchmove和touchend)做出反應。滑鼠特定的事件和 CSS 效果不會 做出反應。SpreadJS 控制元件已針對觸屏進行最佳化,方便使用者在移動端使用。啟用瀏覽器模擬器後,可以檢視SpreadJS的移動端使用情況。如下圖所示:

「神器」Chrome開發者工具使用教程

其次還可以透過拖拽控制檯,修改尺寸,動態修改當前網頁解析度。

這時候有小夥伴發現我的開發者工具一直停留在網頁右側,如果此時想修改位置,怎麼辦呢?可以設定停靠模式:在新頁面開啟;左側;右側;下側等。如下圖所示:

「神器」Chrome開發者工具使用教程

在元素面板中,分為左右兩欄,左欄顯示整個文件的dom結構,樹形結構。在此面板中選擇特性dom元素,右側會顯示更詳細的屬性資訊。

透過元素選擇器選中元素後,可以直接修改dom元素。選中顏色高亮,雙擊,進入編輯狀態,修改dom元素,是實時發生的。

透過右鍵選單 可以進行新增屬性、 修改屬性、刪除屬性、複製貼上元素(原地複製)、

複製(可以複製多種格式如:複製outerHtml、selector、js路徑、樣式、xPath、完整xPath)、隱藏元素、強制執行狀態(:hover、:focus)、儲存為全域性變數等

選中元素後,可以修改樣式。如下圖所示,直接修改線上表格編輯器高度,將‘100%’改為‘1024px’。

「神器」Chrome開發者工具使用教程

同時修改樣式時,支援顏色選擇器(實時預覽顏色 顏色 透明度,編碼方式)、支援陰影選擇器等。

「神器」Chrome開發者工具使用教程

在控制檯面板中,有如下功能:

1、控制檯可以清空或者儲存歷史,如下圖所示。在控制檯輸入資訊後,可以右鍵選擇相應操作。

「神器」Chrome開發者工具使用教程

2、透過上下鍵來切換控制檯程式碼歷史。

3、透過關鍵字來搜尋控制檯資訊。

4、建立控制檯實時表示式。

線上表格編輯器例項化了一個Designer元件,在控制檯中可以對其進行操作。第一步根據dom節點獲取Designer例項物件,其次可以透過getWorkbook()方法獲取WorkBook例項物件spread。由於一個工作簿可能存在多個sheet表單,所以這裡可以透過getActiveSheet()方法獲取下表單例項sheet。在sheet基礎上,可以為當前表單設定單元格值,設定列寬等等。

var designer = GC。Spread。Sheets。Designer。findControl(document。querySelector(“#gc-designer-container”))var spread = designer。getWorkbook()var sheet = spread。getActiveSheet();sheet。setValue(0,0,‘hello,Spread’)sheet。setColumnWidth(0,100)

「神器」Chrome開發者工具使用教程

5、控制檯程式設計介面

1) console。log 最常用 / console。warn / console。error

2) console。assert

3) console。time / console。timeEnd

4) console。group / console。groupEnd / console。groupCollapsed

5) console。table

6) console。clear

下面就分別來看看著六種控制檯列印介面用法吧

1、console。log() 支援列印字串,數字,物件,物件等等。同時還可以設定字型顏色,如console。log(‘%c hello ,SpreadJS’,‘color:red’); 為‘ hello ,SpreadJS’ 設定了紅色字型。執行結果如下圖所示:

「神器」Chrome開發者工具使用教程

cosole。warn() 列印警告,會出現黃色背景,與感嘆號符號。執行結果如下圖所示:

「神器」Chrome開發者工具使用教程

onsole。erroe() 列印報錯資訊,會出現紅色背景與錯誤符號。執行結果如下圖所示:

「神器」Chrome開發者工具使用教程

2、console。assert() 列印斷言,如果斷言為假,則進入控制檯,如果斷言為真,則不會發生任何事情。

在本文前面部分,我們講了如何獲取designer物件,繼而獲取了當前活動表單sheet,其實獲取表單的方法不只是getActiveSheet(),還有getSheet()、getSheetByName()等方式,那麼透過console。assert來判斷下這幾種方式獲取的表單例項是不是同一個呢?如下程式碼:

var sheet_2 = spread。getSheet(1);

console。assert(sheet==sheet_2 ,‘期待兩個例項是一樣的’);

var sheet2 = spread。getSheetFromName(‘Sheet2’);

console。assert(sheet==sheet2 ,‘期待兩個例項是一樣的’);

執行結果如下圖所示:

「神器」Chrome開發者工具使用教程

那麼,如果斷言失敗,會怎麼樣子呢?這裡獲取了索引位置為0的表單與索引為1的表單進行了斷言,如下所示:

「神器」Chrome開發者工具使用教程

3、console。time() / console。timeEnd() 可以用來獲取自從執行console。time()到執行console。end() 中間時間。

在使用SpreadJS中,官方建議如果設定大資料量的更新時,可以使用掛起繪製與恢復繪製來提高效能,咱們來對比下使用與不用這個方法的具體時間差吧,

下圖一是使用了suspendPaint/resumePaint 方法,為100行10列的單元格設定資料,一共耗時81毫秒。

「神器」Chrome開發者工具使用教程

下圖二是沒有使用suspendPaint/resumePaint 方法,一共耗時21294毫秒。差距還是挺大的。

「神器」Chrome開發者工具使用教程

4、console。group()控制檯輸入樹形結構,如下圖所示:

「神器」Chrome開發者工具使用教程

console。group()組合使用建立二級節點,如下圖所示:

「神器」Chrome開發者工具使用教程

5、console。table()可以打印表格結構,如下圖所示:

「神器」Chrome開發者工具使用教程

6、console。profile() 可以進行效能分析。

「神器」Chrome開發者工具使用教程

「神器」Chrome開發者工具使用教程

在原始碼面板中,大概分成三欄,左側展示資源樹,中間為開啟的原始碼內容,右側除錯工具包括斷點,呼叫堆疊等。在原始碼面板中,主要功能為檢視程式碼,除錯程式碼。其中在檢視程式碼過程中,可以進行美觀輸出。

現在大部分原始檔為了提供效能,提供壓縮後的檔案,如果遇到某行程式碼報錯,開啟原始檔看到一堆程式碼非常不利於閱讀,此時可以透過原始檔下方大括號的圖示來進行美化程式碼。

「神器」Chrome開發者工具使用教程

在除錯程式碼過程中,可以透過打斷點方式來除錯程式碼,如何打斷點呢?定位到目標行數,在行數左側輕輕點一下,會出現一個藍色小圓點,此時斷點就ok了。當網頁執行到該程式碼時,就會觸發DeBug模式。

在網路面板中,可以獲取資源與檢視日誌。

「神器」Chrome開發者工具使用教程

「神器」Chrome開發者工具使用教程

限於篇幅,今天的分享先到這裡,更復雜的應用場景以後會持續給大家分享,歡迎關注。