位置: IT常识 - 正文

tree shaking(摇树优化)(摇树的英文是什么)

发布时间:2024-01-15
tree shaking(摇树优化) tree shaking(摇树优化)前言随着js的不断发展,性能优化成了主流的方向,但是如何性能优化又成了现在程序员的一大苦恼,而我作为一名前端小白,也就深陷其中,最近学习到了tree shaking,在这里分享一下一、tree shaking是什么?

推荐整理分享tree shaking(摇树优化)(摇树的英文是什么),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:摇树的英文是什么,摇晃树木,摇晃树木,摇树是啥意思是什么,树摇摇晃晃,摇晃树木,摇树是啥意思是什么,摇树的英文是什么,内容如对您有帮助,希望把文章链接给更多的朋友!

在前端的性能优化中,es6 推出了tree shaking机制,tree shaking就是当我们在项目中引入其他模块时,他会自动将我们用不到的代码,或者永远不会执行的代码摇掉,在Uglify阶段查出,不打包到bundle中。

tree shaking(摇树优化)(摇树的英文是什么)

只支持ES6 Module代码。在production 环境默认开启。

二、哪些情况下可以使用tree-shaking呢?

1.首先,要明确一点:Tree Shaking 只支持 ESM 的引入方式,不支持 Common JS 的引入方式。

ESM: export + importCommon JS: module.exports + require

提示:如果想要做到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';三、项目中如何配置tree-shaking?

1、开发环境配置tree shaking

// webpack.config.jsmodule.exports = { // ... mode: 'development', optimization: { usedExports: true, }};生产环境下的配置// webpack.config.js 生产环境下只需要把mode配置成‘production’即可module.exports = { // ... mode: 'production',};sideEffects: false 根据环境的不同进行配置以后,还需要在 package.json 中,添加字段:**sideEffects: false,**告诉 Webpack 哪些代码可以处理{ "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" ]}

这里引用了webpack文档中的配置,点击即可查看详情

五、sideEffects 对全局 CSS 的影响对于那些直接引入到 js 文件的文件,例如全局的 css,它们并不会被转换成一个 CSS 模块。/* reset.css */* { margin: 0; padding: 0; box-sizing: border-box;}html,body { background-color: #eaeaea;}// main.jsimport "./styles/reset.css"这样的代码,在打包后,打开页面,你就会发现样式并没有应用上,原因在于:上面我们将 sideEffects 设置为 false后,所有的文件都会被 Tree Shaking,通过 import 这样的形式引入的 CSS 就会被当作无用代码处理掉。为了解决这个问题,可以在 loader 的规则配置中,添加 sideEffects: true,告诉 Webpack 这些文件不要Tree Shaking。// webpack.config.jsmodule.exports = { // ... module: { rules: [ { test: /\.css$/i, use: ["style-loader", "css-loader"], sideEffects: true } ] },};总结tree shaking就是类似一棵树有长熟的苹果,将已经成熟的苹果摇掉减轻树的负担,这就实现了这个机制在es6中的import和export才可以触发这个机制项目中对tree-shaking的配置tree-shaking对项目中的影响
本文链接地址:https://www.jiuchutong.com/zhishi/296138.html 转载请保留说明!

上一篇:Vue项目如何打包并部署(nginx)(vue项目如何打包成dist)

下一篇:VueUse(中文)——简介(vueity)

  • 城建税要减进项税吗
  • 视同销售发放福利的会计分录
  • 月末计提无形资产的折旧
  • 套期会计新旧准则对比
  • 软件开发增值税免税吗
  • 符合条件的居民企业之间股息红利
  • 单位投资非盈利性组织怎样核算
  • 上市公司存货跌价准备怎么看
  • 来料加工企业的人工工资计入什么费用
  • 长期股权投资成本法转权益法追溯调整
  • 货物的运输费用怎么算
  • 普通增值税发票可以抵税吗?
  • 价外收取的返还利润是什么意思
  • 老板请员工吃饭唯独没叫你是什么意思
  • 集体劳动合同与劳动合同的区别
  • 预缴税款后怎么开票
  • 增值税发票价税合计是什么意思
  • 分公司如何缴纳公积金
  • 企事业承包承租方缴纳的管理费税费
  • 合同签订的案例
  • 迁出注销类别怎么写
  • 石油天然气用途
  • 教你从脸上看出风水
  • macos monterey值得安装吗
  • 兼职属于劳动关系还是雇佣
  • 销售产品库存商品怎么减
  • 企业向银行申请办理非原路的服务贸易退汇,银行应当
  • electron 打包
  • php激活码永久
  • php 进程通信
  • thinkphp import
  • Code For Better 谷歌开发者之声——初识Web与谷歌,拉起兴趣之心。
  • 建行E信通贴现需要发票吗
  • css定位属性的运用
  • php call stack
  • 企业会计准则季报利润表本期金额怎么填
  • 出口退税后发生退货怎么处理
  • 发票验证不过去会怎么样
  • 防伪税控技术服务费订单号怎么查
  • python怎么打开mac本地文件
  • 增值税冲红后附加税如何申报
  • 空调维修保养方案
  • 房地产中介公司排名
  • 研发费用账务处理完整版
  • 购买的服务如何申请退款
  • 处置全资子公司合并报表
  • 用友t3月末转账流程图
  • 购买食品应注意哪些问题?
  • 固定资产管理需要什么专业
  • 财产清查存在的问题及原因分析
  • 流动比率怎么算出来的
  • windows2003怎么开启远程
  • win10预览版21390
  • win10一年更新一次
  • 高效管理者的三大技能 罗伯特卡茨
  • 如何使用easyscan
  • centos opencl
  • mac电脑 删除废纸篓里的指定文件
  • centos7查看运行级别
  • 怎样设置win10
  • Win RT 8.1 Update 3怎么提前更新安装使用?
  • win10系统电脑无限重启
  • linux做成服务
  • win10系统自带的浏览器叫什么
  • Win10 Mobile 10586.312提前体验
  • win7运行老游戏方法
  • 批处理常用命令
  • 中国现在很多网站
  • 输入命令的三种方法
  • 批处理自动关机命令
  • unity创建射线
  • 简单的安卓代码
  • 以下关于js说法错误的是
  • python-pip安装
  • 爱加密企业版
  • java 把对象存到数据库
  • js简单实现图片轮播
  • 销售黄金的基本知识
  • 所属税务局怎么填写
  • 股权转让是否要交土地增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号