什么叫可摇树优化

什么叫可摇树优化

摇树

  • 摇树是一种消除死代码的方法。这个词最初是由 Rollup 发起的,并逐渐流行开来,但消除死代码的概念却早已存在。webpack 中也涉及了这个概念。
  • 应用程序的依赖项是树状结构。树中的每个节点都代表了一个依赖项,这些依赖项为应用程序提供了不同的功能。我们通过消除不需要的依赖项来减少树的节点。这个过程叫摇树。
  • 早期我们开发的应用程序依赖项比较少(树苗),随着后续的开发树节点越来越多且有很多的节点我们可能已经不需要了(树老化了)。

实施方案

我们先看两个示例 :

  • 不可摇树。下属示例中即使我们不需要 c 和 d。但是他任然会被输出到 JavaScript 客户端。
export default {
  a: xxx,
  b: xxx,
  c: xxx,
  d: xxx
}

import test from 'xxx'
test.a()
test.b()
  • 可摇树
export const a: xxx
export const b: xxx
export const c: xxx
export const d: xxx


import { a, b } from 'xxx'
a()
b()

总结

  • 我们的应用程序采用按需加载的方式导出
    • 一个模块只导出一个程序的时候,使用 export default。导出多个模块的时候使用 export
    • 或者干脆所有的模块导出的时候都使用 export
  • 配置 webpack 让它摇掉未明确指定的 ES6 模块,从而减小最终的构建体积。(貌似只要启动了代码压缩就会完成摇树的工作)。webpack 不会自行执行树状结构。它依赖于像 UglifyJS 这样的第三方工具来执行实际的死代码消除。有些情况下,摇树可能无效。例如,请考虑以下模块:
import * as mylib from 'mylib';
export const someVar = mylib.a;
export const someOtherVar = mylib.b

import { someVar } from 'xxx'
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Webpack树摇(Tree Shaking)是一种在Webpack中进行性能优化的手段,它通过静态分析和模块依赖关系来消除无用的代码,从而减少最终打包文件的体积。树摇会通过识别并删除未被使用的模块、函数、变量等,以达到优化代码的目的。 虽然Webpack从2.x版本开始原生支持树摇功能,但由于JavaScript的动态特性和模块的复杂性限制,直到最新的5.0版本,树摇仍然存在一些问题,使得优化效果可能不如预期。因此,开发者需要有意识地优化代码结构,或者使用一些补丁技术来帮助Webpack更精确地检测无效代码,完成树摇操作。一个常见的优化操作是避免无意义的赋值,以减少无用代码的产生。[3.1] 总结来说,Webpack树摇是一种通过静态分析和模块依赖关系来消除无用代码的性能优化手段,它可以帮助减少最终打包文件的体积,提升网页加载速度。但在实际使用中,需要注意JavaScript的动态特性和复杂的模块结构可能会对树摇效果造成影响,需要开发者有意识地进行代码优化和使用辅助技术来实现更精确的树摇操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Webpack 原理系列九:Tree-Shaking 实现原理](https://blog.csdn.net/zjjcchina/article/details/121159109)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [webpack中的tree shaking(树摇)-----移除未使用的代码](https://blog.csdn.net/qq_41869212/article/details/128396960)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值