webpack 4 笔记六 关于tree shaking

本文介绍了JavaScript中的tree shaking技术,用于删除未引用的死代码以优化应用性能。通过一个简单的webpack 4配置示例,展示了如何在项目中实现tree shaking,包括添加通用模块、设置开发模式和调整入口脚本,以展示tree shaking如何工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tree shaking 是一个术语,通常用于描述移除 JavaScript 上下文中的未引用代码(dead-code)

如果将应用程序比作一棵树。
绿色表示实际用到的源码和 library,是树上活的树叶。
灰色则表示无用的代码(dead-code),是秋天树上枯萎的树叶。
为了除去死去的树叶,你必须摇动这棵树,使它们落下。

tree shaking 的原理可以参考Tree-Shaking性能优化实践 - 原理篇

下面,让我们跟着官方文档一起来码

简单实现

一、添加一个通用模块

在我们的项目中添加一个新的通用模块文件 src/math.js,此文件导出两个函数
src/math.js

export function square(x) {
 return x * x;
}

export function cube(x) {
 return x * x * x;
}

将mode配置选项设置为开发以确保未缩小捆绑包:

const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
- }
+ },
+ mode: 'development',
+ optimization: {
+   usedExports: true
+ }
};

webpack.config.js
接着,更新入口脚本,使用其中一个新方法,并且为了简单,将 lodash 删除:

src/index.js

- import _ from 'lodash';
+ import { cube } from './math.js';

 function component() {
-   var element = document.createElement('div');
+   var element = document.createElement('pre');

-   // lodash 是由当前 script 脚本 import 导入进来的
-   element.innerHTML = _.join(['Hello', 'webpack'], ' ');
+   element.innerHTML = [
+     'Hello webpack!',
+     '5 cubed is equal to ' + cube(5)
+   ].join('\n\n');

   return element;
 }
...

命令行运行 npm run build 输出 bundle.js ,
在这里插入图片描述
在这里插入图片描述
square它没有被导入,但它仍然包含在捆绑包中。为啥咧?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值