发布时间:2023-04-22 17:00
在前端的性能优化中,es6 推出了tree shaking机制,tree shaking就是当我们在项目中引入其他模块时,他会自动将我们用不到的代码,或者永远不会执行的代码摇掉,在Uglify阶段查出,不打包到bundle中。
只支持ES6 Module代码。在production 环境默认开启。
1.首先,要明确一点:Tree Shaking 只支持 ESM 的引入方式,不支持 Common JS 的引入方式。
提示:如果想要做到tree shaking,在引入模块时就应该避免将全部引入,应该引入局部才可以触发tree shaking机制
代码如下(示例):
// Import everything (not tree-shaking)
import lodash from 'lodash';
// Import named export (can be tree-shaking)
import { debounce } from 'lodash';
// Import the item directly (can be tree-shaking)
import debounce from 'lodash/lib/debounce';
1、开发环境配置tree shaking
// webpack.config.js
module.exports = {
// ...
mode: 'development',
optimization: {
usedExports: true,
}
};
// webpack.config.js 生产环境下只需要把mode配置成‘production’即可
module.exports = {
// ...
mode: 'production',
};
{
"name": "webpack-demo-1",
"sideEffects": false,
// ...
}
// 列子:
// All files have side effects, and none can be tree-shaken
{
"sideEffects": true
}
// No files have side effects, all can be tree-shaken
{
"sideEffects": false
}
// Only these files have side effects, all other files can be tree-shaken, but these must be kept
{
"sideEffects": [
"./src/file1.js",
"./src/file2.js"
]
}
/* reset.css */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
background-color: #eaeaea;
}
// main.js
import "./styles/reset.css"
// webpack.config.js
module.exports = {
// ...
module: {
rules: [
{
test: /\\.css$/i,
use: ["style-loader", "css-loader"],
sideEffects: true
}
]
},
};
论文阅读:RRPN:RADAR REGION PROPOSAL NETWORK FOR OBJECT DETECTION IN AUTONOMOUS VEHICLES
使用TorchScript和libtorch进行模型推理[附C++代码]
Qt实战案例(41)——利用QWinTaskbarButton和QWinTaskbarProgress类实现任务栏进度条的显示
【elasticsearch】elasticsearch入门教程 es整合spring教程
zookeeper代替eureka与springcloud整合
图解Transformer模型(Multi-Head Attention)
SAP ABAP 系统进行 client 拷贝时遇到的 63999 table too wide 错误消息
亿慧通2022最新青龙最新版本面板以及安装docker镜像搭建教程,最新版本2.11.2
极客日报:爆字节跳动日均进账10.07亿元;iPhone 13粉屏上热搜;英特尔跌落神坛,CEO回应:是我们骄傲自大了