(譯)刪除未使用的前端代碼

来源:https://www.cnblogs.com/mr-nan/archive/2019/02/28/remove-unused-code.html
-Advertisement-
Play Games

註:本文翻譯自 https://web.dev/fast/remove-unused-code,Written by Houssein Djirdeh。如有翻譯錯誤請指正。 像 npm 這樣的包管理器通過允許任何人輕鬆地下載和使用超過50萬公共包來讓JavaScript世界變得更好。但我們經常引入一 ...


註:本文翻譯自 https://web.dev/fast/remove-unused-codeWritten by Houssein Djirdeh。如有翻譯錯誤請指正。

  像 npm 這樣的包管理器通過允許任何人輕鬆地下載和使用超過50萬公共包來讓JavaScript世界變得更好。但我們經常引入一些沒有充分利用的庫。為瞭解決這個問題,可以通過分析你的bundle(即打包後得到的代碼包,下文簡稱為包)來檢測未使用的代碼。然後,移除未使用的非必需的庫。

分析包

  查看網路請求大小的最簡單方法是打開谷歌瀏覽器的開發者工具中的 Network 面板,把 Disable Cache 勾上,然後刷新頁面。

  開發者工具中的 Coverage 標簽頁能告訴你有多少你的應用中的CSS和JS代碼是未使用的。

  通過 Node CLI 配置一個完整的 Lighthouse 配置,一個“未使用的JavaScript”檢查工具 Audits 同樣可以用來跟蹤你的應用程式附帶了多少未使用的代碼。

  如果你使用 webpack 作為你的打包器,Webpack Bundle Analyzer 將幫助您研究是什麼組成了這個包。像引入其它一些插件一樣在 webpack 配置中引入這個插件:

1 module.exports = {
2   //...
3   plugins: [
4     //...
5     new BundleAnalyzerPlugin()
6   ]
7 }

  儘管 webpack 通常用來構建單頁應用,但其他打包器,例如 ParcelRollup ,同樣有可以用來分析包的可視化工具。

  引入這個插件後重新載入頁面將呈現整個包的可縮放矩形樹圖。

  通過使用這種可視化工具,你可以查看包的哪些部分比其他部分大,並更好地瞭解導入的所有庫。這有助於識別你是否正在使用一些未使用或不必要的庫。

刪除未使用的庫

  在上面的矩形樹圖中,在 @firebase 域中有相當多的包。如果你的網站只需要 firebase 的資料庫組件,更改獲取該庫的 imports:

1 //import firebase from 'firebase';
2 import firebase from 'firebase/app';
3 import 'firebase/database';

  需要強調的是,對於較大的應用,這個過程要複雜得多。

  對於你非常確定沒有在任何地方使用的看起來很神秘的包,請後退一步,查看哪些頂級依賴項正在使用它。試著找到一種方法,只從中導入你需要的組件。如果你沒有使用一個庫,則刪除它。如果初始頁面載入不需要這個庫,則考慮是否可以 lazy loaded(延遲載入)

刪除非必需的庫

  並不是所有的庫都可以容易地分解為多個部分並有選擇地導入。在這些場景中,考慮是否可以完全刪除這個庫。構建自定義解決方案或利用更輕量級的替代方案始終是值得考慮的選項。但是,在從應用程式中完全刪除一個庫之前,必須權衡這兩種工作的複雜性和工作量。

實戰

  瞭解更多,並將本指南付諸行動:

  https://web.dev/fast/remove-unused-code/codelab-remove-unused-code


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用CONCAT()函數 mysql向表中某欄位後追加一段字元串(field為欄位名): update table_name set field=CONCAT(field,'str',) mysql 向表中某欄位前加字元串update table_name set field=CONCAT('str ...
  • 關於面試題,可能沒那麼多時間來總結答案,有什麼需要討論的地方歡迎大家指教。主要記錄一下準備過程,和麵試的一些總結,希望能幫助到正在面試或者將要面試的同學吧。 騰訊 一面 1、介紹一下實習的項目,任務分工,做了哪些工作?介紹實習內容2、網路相關的:項目裡面使用到什麼網路庫,用過ASIHTTP庫嗎3、斷 ...
  • 前言: MJRefresh是iOS開發的一個表視圖上下拉刷新的框架,該框架使用非常廣泛,使用該框架的APP有騰訊微博、139郵箱、順豐速運、人民日報、直銷銀行、山西日報等等。 該框架在表視圖刷新載入新數據的使用上非常方便。 集成方法: CocoaPods:pod 'MJRefresh' 使用範圍: ...
  • 1、 通知傳值-一般常用於返回界面的時候,把返回前界面的值傳到返回後界面。 2、block 反向傳值 前一個界面獲取後一個界面傳過來的值 3、屬性傳值(一般適用於前一個界面傳值給後一個界面) 4、數據持久化傳值 NSUserDefaults是數據持久化的一種主要做存儲使用。 ...
  • 組件化開發的主要步驟: 一、新建Modules 1、新建Project,作為應用的主Module。 2、新建Module:"Common",類型選擇"Android Library",作為所有其它Module的基礎依賴庫。 3、新建Module:"Home",類型選擇"Android Library ...
  • ionic3 總共有8個鉤子函數,分別是:onPageLoaded,onPageWillEnter,onPageDidEnter,onPageWillLeave,onPageDidLeave,onPageWillUnload,onPageDidUnload 還有兩個鉤子不太一樣,上面的鉤子函數都沒有 ...
  • N久沒寫過博客了… 最近在玩 APEX 但是手殘黨表示打到15級了,至今殺敵 4 人… 當快遞員是越來越順手了… 今年巨硬的 Build 大會會在 5 月 6-8 號召開 新發佈的 Hololens 應該會有更多的介紹出來 打開 Build 網址:https://www.microsoft.com/ ...
  • 前言 如果統計一番前端最常用的方法,那麼 console.log 一定位列其中。無論你寫的是原生 JS 亦或者是 JQuery、Vue等等,調試之時,都離不開 console.log 方法。但是,console 對象中的方法不僅僅只有 log 方法。強大的 console 對象提供了大量控制台調試的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...