網站首頁 編程語言 正文
一、Tree shaking (搖樹優化)
Webpack
打包中的tree shaking
指的是通過靜態分析代碼引用關系,在構建時僅打包項目中實際使用到的代碼,從而將未使用過的代碼排除在構建產物之外,減小項目體積。
在Tree shaking過程中,Webpack會自動分析項目中每個模塊的引用關系,只有被引用過的模塊和代碼塊才會被打包到輸出文件中,未被引用的模塊和代碼塊則會被刪除,以減少輸出文件大小。這樣就可以標記和刪除沒有使用過的代碼,從而減小打包后文件的體積,提升網站性能。
值得注意
的是tree shaking的必要條件之一為ES6模塊化
,因為ES6模塊化中的代碼引用關系是明確的靜態分析關系,使得Webpack能夠方便地判斷哪些代碼需要被打包。而對于CommonJS模塊和AMD模塊,因引用關系不可確定,無法做到tree shaking。因此在開發時候應該遵循ES6模塊化的規范。
關于使用
這個功能我們不需要額外配置什么,webpack已經自動開啟了這個功能
這也是我們用webpakc構建項目的好處之一
二、babel編譯優化
babel會對ES6及以上的代碼進行轉譯成ES5的代碼,而ES5的代碼存在一些冗余的部分,也就是所謂的輔助代碼。因此會增加代碼的體積。
Babel 對一些公共方法使用了非常小的輔助代碼,比如 _extend。默認情況下會被添加到每一個需要它的文件中。
在babel的配置中關閉部分不必要的轉譯功能來減少代碼的體積。
什么是@babel/plugin-transform-runtime
@babel/plugin-transform-runtime
是一個Babel插件,用于將Babel轉換代碼時使用的工具函數替換為較小的運行時版本,以減小打包后文件的體積。 這個插件使用了babel-runtime作為運行時的源模塊,而不是將其內聯到每個編譯后的模塊中。
使用@babel/plugin-transform-runtime
可以避免重復的代碼并提供其他功能,如對內置對象的Polyfills支持。此外,它還可以避免污染全局命名空間,因為它將其所有依賴項都打包到一個單獨的模塊中。這使得它適用于任何類型的項目,包括library的構建。
使用
下載:
npm i @babel/plugin-transform-runtime -D
配置:
module.export = {
module: {
rules: [
{
test: /\.js$/,
include: path.resolve(__dirname, "../src"),
use: [
{
loader: "babel-loader",
options: {
plugins: ["@babel/plugin-transform-runtime"], // 減少代碼體積
},
},
],
},
]
}
}
原文鏈接:https://blog.csdn.net/jieyucx/article/details/131260777
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-08-30 Linux常用tar命令
- 2022-07-19 JDBC BLOB文件存取
- 2022-07-07 ASP.Net使用System.Security.Principal模擬用戶_實用技巧
- 2022-05-12 小程序 onLaunch 與 onLoad 異步問題的解決方案
- 2022-11-23 Python中列表的基本操作匯總_python
- 2023-10-15 達夢錯誤碼信息-PRO*C 錯誤碼匯編
- 2022-07-03 C#并行編程之PLINQ(并行LINQ)_C#教程
- 2023-01-05 Kotlin協程Job生命周期結構化并發詳解_Android
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支