現代Web 應用不再依賴單一的龐大JavaScript 包。研究表明,較大的包會增加內存使用和CPU 負載,尤其是在中低端移動設備上。 Webpack 提供了多種功能來減小包大小並控制資源加載優先級,其中最重要的是代碼分割和性能提示。代碼分割將代碼分成多個包,按需或併行加載;性能提示在構建時檢測包大小是否超過指定閾值,以便進行優化或刪除不必要的代碼。
Webpack 默認情況下,當資源大小或入口點超過250KB (244KiB) 時會發出警告,但您可以通過webpack.config.js
文件中的performance
對象配置性能提示的顯示方式和大小閾值。本文將介紹如何利用此功能作為防止性能下降的第一道防線。
自定義預算
默認的資源和入口點大小閾值可能並不總是符合您的需求,但可以進行配置。例如,一個小型博客的預算可能是資源和入口點各50KB (48.8KiB)。 webpack.config.js
中的相關設置如下:
module.exports = { performance: { maxAssetSize: 50000, maxEntrypointSize: 50000, } };
maxAssetSize
和maxEntrypointSize
屬性分別控制資源和入口點的閾值大小(單位為字節)。 maxEntrypointSize
確保從entry
對像中列出的文件(通常是JavaScript 或Sass 文件)創建的包不超過指定閾值; maxAssetSize
對Webpack 生成的其他資源(例如圖像、字體等)強制執行相同的限制。
超出閾值時顯示錯誤
Webpack 默認在超出預算閾值時發出警告。這對於開發環境足夠了,但對於生產環境則不足。您可以通過將hints
屬性添加到performance
對象並將其設置為'error'
來觸發錯誤:
module.exports = { performance: { maxAssetSize: 50000, maxEntrypointSize: 50000, hints: 'error', } };
hints
屬性的其他有效值為'warning'
和false
。 false
將完全禁用警告,即使超過了指定的限制。不建議在生產模式下使用false
。
排除某些資源
Webpack 對其生成的每種類型的資源都強制執行大小閾值。如果任何一個資源超過了指定的限制,都會拋出錯誤。例如,如果配置Webpack 處理圖像,那麼只要其中一個圖像超過了閾值,就會出現錯誤。
可以使用assetFilter
屬性來控制用於計算性能提示的文件:
module.exports = { performance: { maxAssetSize: 50000, maxEntrypointSize: 50000, hints: 'error', assetFilter: function(assetFilename) { return !assetFilename.endsWith('.jpg'); }, } };
這告訴Webpack 在運行性能提示計算時,排除任何以.jpg
結尾的文件。它能夠使用更複雜的邏輯來滿足各種環境、文件類型和其他資源的條件。
限制
目前的一個限制是,相同的預算閾值應用於所有資源和入口點。換句話說,尚無法根據需要設置多個預算,例如為JavaScript、CSS 和圖像文件設置不同的限制。不過,已經有開放的pull request 應該會移除此限制。
總結
在項目開始時設置並強制執行性能預算非常有用。它會提醒您注意依賴項的大小,並鼓勵您尋找更輕量級的替代方案,以避免超出預算。
但是,性能預算並不止於此!資源大小只是影響性能的眾多因素之一,因此仍需要做更多工作來確保提供最佳體驗。運行Lighthouse 測試是了解其他指標以及改進建議的好方法。
以上是使用WebPack執行性能預算的詳細內容。更多資訊請關注PHP中文網其他相關文章!

@keyframesandCSSTransitionsdifferincomplexity:@keyframesallowsfordetailedanimationsequences,whileCSSTransitionshandlesimplestatechanges.UseCSSTransitionsforhovereffectslikebuttoncolorchanges,and@keyframesforintricateanimationslikerotatingspinners.

我知道,我知道:有大量的內容管理系統選項可用,而我進行了幾個測試,但實際上沒有一個是一個,y'知道嗎?怪異的定價模型,艱難的自定義,有些甚至最終成為整個&

鏈接CSS文件到HTML可以通過在HTML的部分使用元素實現。 1)使用標籤鏈接本地CSS文件。 2)多個CSS文件可通過添加多個標籤實現。 3)外部CSS文件使用絕對URL鏈接,如。 4)確保正確使用文件路徑和CSS文件加載順序,優化性能可使用CSS預處理器合併文件。

選擇Flexbox還是Grid取決於佈局需求:1)Flexbox適用於一維佈局,如導航欄;2)Grid適合二維佈局,如雜誌式佈局。兩者在項目中可結合使用,提升佈局效果。

包含CSS文件的最佳方法是使用標籤在HTML的部分引入外部CSS文件。 1.使用標籤引入外部CSS文件,如。 2.對於小型調整,可以使用內聯CSS,但應謹慎使用。 3.大型項目可使用CSS預處理器如Sass或Less,通過@import導入其他CSS文件。 4.為了性能,應合併CSS文件並使用CDN,同時使用工具如CSSNano進行壓縮。

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

重構自己的代碼看起來是什麼樣的?約翰·瑞亞(John Rhea)挑選了他寫的一個舊的CSS動畫,並介紹了優化它的思維過程。

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。