自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

還在摸黑 ThreeShaking 么?來試下 Chrome Devtools 的 Coverage 可視化

系統
網頁的性能優(yōu)化我們會分為兩部分來看:資源加載的性能優(yōu)化、代碼運行的性能優(yōu)化。代碼運行的性能優(yōu)化需要用 Performance 工具記錄某段時間的代碼運行情況,分析出 long task,定位到耗時高的代碼,針對性的優(yōu)化它。

[[443091]]

網頁的性能優(yōu)化我們會分為兩部分來看:資源加載的性能優(yōu)化、代碼運行的性能優(yōu)化。

代碼運行的性能優(yōu)化需要用 Performance 工具記錄某段時間的代碼運行情況,分析出 long task,定位到耗時高的代碼,針對性的優(yōu)化它。

比如下圖中被標紅的就是 long task:

可以進一步定位到耗時高的代碼,然后對它進行優(yōu)化。

(不會用 Performance 工具做性能分析的話,可以看這篇文章:快速掌握 Performance 性能分析:一個真實的優(yōu)化案例)

還有一個方面就是資源加載的性能優(yōu)化了。

我們會用 webpack、purgecss 做 js 和 css 的 treeshaking,會用 webpack 的 code spliting 做懶加載。目的都是為了把無用的代碼去掉或者延后加載來提升網頁性能。

但是,treeshaking 和 code spliting 很多情況下我們都是摸黑做的,可能用上了這個功能,但卻不知道效果怎么樣,不知道是否真的達到了優(yōu)化加載性能的目的,把用不到的代碼給刪掉或者延后加載了。

如果能像 Performance 工具分析和可視化代碼耗時一樣,能把沒用到的代碼也給分析出來并可視化展示就好了,那樣就能針對性的去做 treeshaing 或懶加載,還能直觀的看到優(yōu)化前后的效果。

其實,Chrome Devtools 是有這個功能的,只是很多人不知道。今天我們就來學下這個工具吧。

Coverage 工具分析無用代碼

Chrome Devtools 提供了 Coverage 工具用于分析運行時的代碼使用情況:

我們準備這樣一段代碼:

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3. <head> 
  4.     <meta charset="UTF-8"
  5.     <style type="text/css"
  6.         #box { 
  7.             width: 300px; 
  8.             height: 300px; 
  9.             background: blue; 
  10.         } 
  11.         a { 
  12.             color: #fff; 
  13.         } 
  14.         .box { 
  15.             background: pink; 
  16.         } 
  17.     </style> 
  18. </head> 
  19. <body> 
  20.     <div id="box"
  21.     </div> 
  22.     <script> 
  23.         function add(a, b) { 
  24.             return a + b; 
  25.         }  
  26.         function subtract(a, b) { 
  27.             return a - b; 
  28.         } 
  29.         function multiply(a, b) { 
  30.             return a * b; 
  31.         } 
  32.         function divide(a, b) { 
  33.             return a / b; 
  34.         } 
  35.  
  36.         const res = add(3, 5); 
  37.         console.log(res); 
  38.  
  39.         const res2 = multiply(2, 4); 
  40.         console.log(res2); 
  41.     </script> 
  42. </body> 
  43. </html> 

很明顯,js 里面 subtract、divide 兩個函數沒有用到,css 里面 a、.box 的樣式沒有用到。

我們用 Coverage 工具分析下:

點擊 reload 按鈕

頁面會重新加載并記錄代碼使用情況,藍色是使用的,紅色是未使用的。

點擊會打開 Sources 面板展示詳情:

可以看到,正如我們分析的,js 和 css 的沒用到的代碼都被分析出來了。

優(yōu)化目標有了,接下來的優(yōu)化就很有針對性了。

我們會做這些優(yōu)化:

  • 從源碼中刪掉(如果代碼確實沒用的話)
  • 用 webpack、purgecss 或其他工具的 treeshking 功能在產物中刪掉(如果這個網頁里用不到的話)
  • 用 webpack 或其他工具的 code spliting 做懶加載(如果暫時用不到,之后可能用到的話)

這些優(yōu)化的目標就是把分析出來的代碼刪掉或者懶加載,優(yōu)化得很有針對性,而且優(yōu)化完后可以直觀的看到優(yōu)化的效果。

小結:資源加載的性能優(yōu)化可以用 Coverage 工具記錄代碼使用情況,分析出沒用到的代碼,使用 treeshking、懶加載等方式,針對性的優(yōu)化它。

一般網頁中都引入了多個文件,每個文件代碼使用情況的分析也是一樣 。

比如這樣一個 html,引入了外部 css 和 js 兩個文件

  1. <!DOCTYPE html> 
  2. <html lang="en"
  3. <head> 
  4.     <meta charset="UTF-8"
  5.     <link rel="stylesheet" type="text/css" href="index.css" /> 
  6. </head> 
  7. <body> 
  8.     <div id="box"
  9.     </div> 
  10.     <script src="index.js"></script> 
  11. </body> 
  12. </html> 

js:

  1. function add(a, b) { 
  2.     return a + b; 
  3. }  
  4. function subtract(a, b) { 
  5.     return a - b; 
  6. function multiply(a, b) { 
  7.     return a * b; 
  8. function divide(a, b) { 
  9.     return a / b; 
  10.  
  11. const res = add(3, 5); 
  12. console.log(res); 
  13.  
  14. const res2 = multiply(2, 4); 
  15. console.log(res2); 

css:

  1. #box { 
  2.     width: 300px; 
  3.     height: 300px; 
  4.     background: blue; 
  5. a { 
  6.     color: #fff; 
  7. .box { 
  8.     background: pink; 

也同樣可以分析出來:

總結

性能優(yōu)化分為代碼運行的性能優(yōu)化、資源加載的性能優(yōu)化。

代碼運行的性能優(yōu)化會用 Performance 工具記錄耗時數據,可以可視化的分析,然后針對性的優(yōu)化。

同樣,資源加載的性能優(yōu)化可以用 Coverage 工具記錄代碼使用情況,可視化的標記出沒用到的代碼,之后就可以針對性的優(yōu)化了,用 treeshking 或者 code splinting 的懶加載等方式。

 

總之,別再摸黑做 treeshking 等性能優(yōu)化了,學會了用 Coverage 工具,要優(yōu)化啥,優(yōu)化的效果怎么樣,一目了然!

 

責任編輯:武曉燕 來源: 神光的編程秘籍
相關推薦

2021-12-25 22:30:27

Chrome DevTJavaScript調試工具

2022-08-23 23:19:12

ChromeCoverage

2020-03-11 14:39:26

數據可視化地圖可視化地理信息

2017-10-14 13:54:26

數據可視化數據信息可視化

2022-08-26 09:15:58

Python可視化plotly

2009-04-21 14:26:41

可視化監(jiān)控IT管理摩卡

2017-10-09 10:04:48

JavaScriptChrome DevT調試

2015-08-20 10:06:36

可視化

2018-05-17 08:41:12

云服務虛擬化數據中心

2022-03-01 10:29:44

Kubernetes容器

2010-06-09 15:09:57

IP網絡

2017-02-23 09:42:53

大數據數據可視化技術誤區(qū)

2022-07-08 15:00:04

農業(yè)噴灌項目鴻蒙

2022-09-02 09:01:36

ChromeWeb調試

2022-10-28 19:19:11

ChromeNetwork網絡

2022-06-06 21:46:32

Kubernetes網絡

2022-07-29 09:01:20

Chrome試源代碼調試技巧

2022-09-23 15:01:00

JavaScripChrome技巧

2018-05-31 08:25:13

誤區(qū)工具可視化

2018-03-27 22:40:59

深度學習
點贊
收藏

51CTO技術棧公眾號