成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

分析網頁 JavaScript Bundles 的幾種方法

開發 前端
分析你網頁中的 JavaScript Bundles 大小,并限制網頁中的 JavaScript 數量,可以減少瀏覽器花費在解析、編譯和執行 JavaScript 的時間。本文我們來一起看看分析網頁中 JavaScript Bundles 的幾種方法。

分析你網頁中的 JavaScript Bundles 大小,并限制網頁中的 JavaScript 數量,可以減少瀏覽器花費在解析、編譯和執行 JavaScript 的時間。這可以加快瀏覽器可以開始響應用戶交互行為的速度,從而改善 First Input Delay、Largest Contentful Paint 等幾個重要的性能指標。

本文我們來一起看看分析網頁中 JavaScript Bundles 的幾種方法。

查看 JavaScript 文件

使用 Chrome Devtools 中的 Network 看板是查看頁面上下載所有 JavaScript 最簡單的方法。

按 Ctrl+Shift+J 或在Mac上 Command+Options+J 打開 Devtools:

然后打開 Network 看板,在看板處于打開狀態下重新刷新頁面,并點擊 JS 篩選項篩選出所有 JavaScript 文件。

可以看到,這是一個很簡單的網頁,里面的代碼執行邏輯也很簡單,但是如果是一個把所有依賴和代碼邏輯都打包在一起的JS文件就不會這么容易分析了,里面的邏輯會非常混亂,你會很難看出里面的代碼邏輯。

下面是一個將許多第三方庫和本身站點的js模塊打包到一起的網站:

下面我們來看看分析這種代碼的方法:

Show Coverage

按 Ctrl+Shift+P 或在Mac上 Command+Options+PP 打開命令菜單,搜索 Coverage然后選擇 Show Coverage 命令:

然后重新加載網頁,在下拉菜單中選擇 JavaScript:

在表格中,我們可以很明確的看到每個文件有多少未使用的 JavaScript,你還可以單擊任何 URL 進行逐行查看分析。

Webpack

盡管上面的方法能讓我們看到有多少未使用的 JavaScript 但是要分析組成 Bundles的模塊仍然不容易。

如果你已經在你的網站上打包JS了,那么你肯定使用了 webpack、rpllup 等模塊打包器,其中很多的工具都為我們提供了分析模塊的非常好的方式。

讓我們看一個例子,如果你在用 Webpack,那么你可以生成一個 stats.json 的文件,其中包含所有打包模塊的統計信息。

雖然直接看這個文件也能看出有哪些模塊,但是社區的一些工具能夠幫我們更好的對模塊信息進行可視化分析:

比如 webpack-bundle-analyzer,它通過分析 Webpack 打包后的產物,將其映射到 stats.json 的模塊名稱,然后就創建出了打包產物的交互式樹形可視化。顯示了每個模塊的大小、Gzip解析大小以及彼此之間的關系。

SourceMap

這些打包器提供的可視化工具很棒,但是它們都屬于打包器特定的工具,對于任何網站,無論使用任何打包器,都可以用 SourceMap 將打包后的代碼還原成原始代碼。這非常有用,因為它可以使我們在構建過程中經過混淆和轉換的代碼仍然可以被還原。

在壓縮或打包后的 JavaScript 文件中,通過注釋指向 SourceMap 文件的位置。

所有比較新的瀏覽器都支持源映射,使用 Chrome,你可以在 Devtools 中啟用它:

當 Chrome 檢測到可用的 SourceMap 時,可以還原源代碼:

source-map-expoler

source-map-expoler 可以通過 SourceMap 生成打包產物的樹形可視化關系,通過查看這些模塊關系,我們可以發現一些問題:

比如上面的 moment、lodash 兩個庫,占整個文件的比重非常大,它們的大小遠遠超出它們的使用價值,我們可以將它們都轉換成 ES 模塊,則它們可以變的更小更優化。

Lighthouse

使用 Lighthouse,同樣可以通過 SourceMap 分析我們打包產物中未使用的 JavaScript 代碼。

另外還有一個正在探索中的功能,可以利用 SourceMap 分析打包產物中在新瀏覽器不需要的 polifill 代碼。

以上就是幾種分析 JavaScript 打包產物的工具和方法,趕快用起來去優化你的 JavaScript 打包產物吧!

 

責任編輯:趙寧寧 來源: code秘密花園
相關推薦

2010-06-03 08:55:43

LINQ

2020-10-16 18:35:53

JavaScript字符串正則表達式

2021-11-05 21:36:59

JavaScript語言開發

2009-09-18 12:29:55

2010-05-17 15:17:06

MySQL常用操作

2013-08-21 11:31:21

iPhone圖片方法

2010-01-22 14:46:25

C++語言

2010-04-30 16:22:07

Unix終端

2010-10-26 09:23:03

Web Service

2021-03-08 09:32:04

Python文件命令

2020-01-10 16:23:44

Springboot停止服務Java

2009-09-09 11:24:46

PHP實現MVC

2011-06-16 10:48:33

session

2009-08-31 09:19:31

c#隱藏窗口

2021-02-26 13:20:48

Shell空行Linux

2018-08-09 20:47:41

2011-07-08 15:11:03

JAVA

2009-07-28 16:07:40

.NET圖片快速處理

2009-06-23 14:23:00

名稱空間Java API

2011-06-23 15:56:46

反向鏈接
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本亚洲精品成人欧美一区 | 国产一级在线观看 | 亚洲精品久久久久久宅男 | 国产精品一区二区在线 | 国产视频一区二区 | 国产精品1区2区 | 亚洲欧洲精品一区 | 综合久久一区 | 成人国产精品免费观看 | 日韩精品一区二区三区免费观看 | 免费xxxx大片国产在线 | 一区二区三区精品 | 午夜影视网 | 国产精品久久 | 免费看a| 韩国精品一区 | 精品视频在线免费观看 | 亚洲一区国产精品 | 免费国产一区 | 一区二区亚洲 | 成人免费视频播放 | 亚洲精品电影在线观看 | 日韩二区三区 | 国产一区二区精品在线观看 | 国产一区三区视频 | 国产精品日韩一区二区 | 精品美女 | 日韩欧美在线不卡 | 日韩午夜在线播放 | 青青久视频 | 超碰免费在线观看 | 欧美日韩在线精品 | 国产亚洲一区二区在线观看 | 交专区videossex农村 | 亚洲欧美综合精品另类天天更新 | 亚洲精品一区国语对白 | 欧美一区二区三区四区在线 | 亚洲综合久久网 | 日韩福利 | 午夜寂寞福利视频 | 免费国产一区二区 |