位置: IT常识 - 正文

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

编辑:rootadmin
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)

  • 西安一码通如何查看家庭成员健康嘛(西安一码通如何切换用户)

    西安一码通如何查看家庭成员健康嘛(西安一码通如何切换用户)

  • 荣耀v20支持人脸识别吗(荣耀v20有人脸解锁吗)

    荣耀v20支持人脸识别吗(荣耀v20有人脸解锁吗)

  • 微信如何退群(微信如何退群不删除聊天记录)

    微信如何退群(微信如何退群不删除聊天记录)

  • 怎么把旧手机的通讯录导入iphone11(怎么把旧手机的备忘录导入新手机)

    怎么把旧手机的通讯录导入iphone11(怎么把旧手机的备忘录导入新手机)

  • 怎么不让别人看淘宝主页(怎么不让别人看到微信运动步数)

    怎么不让别人看淘宝主页(怎么不让别人看到微信运动步数)

  • word1.5倍行距怎么设置(word1.5倍行距怎么调)

    word1.5倍行距怎么设置(word1.5倍行距怎么调)

  • m8029功能是什么(m8329功能是什么)

    m8029功能是什么(m8329功能是什么)

  • 华为手机怎么清理内存(华为手机怎么清理空间)

    华为手机怎么清理内存(华为手机怎么清理空间)

  • 相机的raw是什么(相机里raw是什么)

    相机的raw是什么(相机里raw是什么)

  • qq密保手机号是什么意思(qq密保手机号是陌生人的)

    qq密保手机号是什么意思(qq密保手机号是陌生人的)

  • 钉钉怎么清理空间(钉钉怎么清理空间消息)

    钉钉怎么清理空间(钉钉怎么清理空间消息)

  • 华为nove6支持无线充电吗(华为nova6支不支持无线充电功能)

    华为nove6支持无线充电吗(华为nova6支不支持无线充电功能)

  • 怎么关闭杀毒软件和防火墙(如何关掉杀毒软件)

    怎么关闭杀毒软件和防火墙(如何关掉杀毒软件)

  • 微信打车怎么修改目的地(微信打车怎么修改行程)

    微信打车怎么修改目的地(微信打车怎么修改行程)

  • 苹果xsmax发热怎么解决(苹果手机xsmax发热厉害)

    苹果xsmax发热怎么解决(苹果手机xsmax发热厉害)

  • vivox21可以刷门禁吗(vivo可以刷门卡吗)

    vivox21可以刷门禁吗(vivo可以刷门卡吗)

  • 华为微信分身的文件在哪里(华为微信分身的照片在哪里)

    华为微信分身的文件在哪里(华为微信分身的照片在哪里)

  • nba2k17空接怎么操作(nba2k17空接怎么按键)

    nba2k17空接怎么操作(nba2k17空接怎么按键)

  • 搜狗搜索如何举报(搜狗问问举报中心)

    搜狗搜索如何举报(搜狗问问举报中心)

  • 手机无线投屏到电脑(手机无线投屏到Win11电脑)

    手机无线投屏到电脑(手机无线投屏到Win11电脑)

  • 苹果Mac怎么复制粘贴 快速复制粘贴三种方法介绍(苹果mac怎么复制文件到u盘 免费软件)

    苹果Mac怎么复制粘贴 快速复制粘贴三种方法介绍(苹果mac怎么复制文件到u盘 免费软件)

  • 在win7系统中,怎么创建宽带连接?(在win7系统中将打开窗口拖到屏幕顶端)

    在win7系统中,怎么创建宽带连接?(在win7系统中将打开窗口拖到屏幕顶端)

  • Vue3 项目中使用setup()函数报错,script setup cannot contain ES module exports(vue3使用教程)

    Vue3 项目中使用setup()函数报错,script setup cannot contain ES module exports(vue3使用教程)

  • 免租期租金怎么处理
  • 年度纳税申报表A105000纳税调整项目明细表中,收入
  • 企业代扣代缴个人所得税
  • 国有资本及权益客观增减因素
  • 免征增值税企业进项税怎么处理
  • 一般纳税人公司是什么型企业
  • 未到期责任准备金计算方法
  • 电商行业平台开的发票怎么入账
  • 无合同销售收入怎么算
  • 退货开负数发票的情况该如何做会计处理?
  • 企业的完工产品是指
  • 营改增后书据转移印花税是含税的吗?
  • 异地承包工程预缴什么税?
  • 二房东税务局开发票
  • 特许权使用费代扣代缴增值税
  • 技术转让所得减去成本吗
  • 外籍人士劳务费怎么交税
  • 其他综合收益的编码
  • 子公司向母公司借款
  • 资产委托经营管理合同
  • 销售库存商品的记账凭证
  • 购买境外技术缴纳税费
  • 确认坏账需要纳税调整吗
  • 国家税务开票流程
  • 在建工程的施工方案可以外传吗
  • 报销培训费怎么做账
  • 民间借贷以工资抵押的案例
  • 劳务报酬所得与经营所得
  • 认缴制注册资金怎么处理账务
  • php dicom
  • php如何防止后门
  • 办公室设计费计入什么
  • 发生广告费的会计分录
  • 记录一次排查PHP脚本执行卡住的问题
  • 先付款后收到发票怎么入账
  • 微信支付开发文档教程
  • 个人简历html网页代码含效果图
  • js工厂模式创建对象
  • php面试知识点
  • 其他权益工具投资
  • 织梦添加文章如何修改高级参数
  • 怎么实现宏的功能
  • php获取参数值的三种方式
  • 在阿里云的云主机之间怎么通信
  • 金税四期来了我们前期要准备什么
  • 公司买的茶叶怎么入账
  • 公户里的钱可以随便转出嘛
  • 员工为公司垫费合法吗
  • 材料采购和原材料和在途物资的区别
  • 什么情况下固定资产进项税不能抵扣
  • 有限合伙企业协议
  • 长期待摊费用如何评估
  • 收单清算款计入什么费用
  • 专利补贴收入计入什么科目
  • 丢失了发票怎么处理
  • 汽车4s店有哪些功能
  • 对公网银回单可以导出吗
  • 企业所得税里的利润总额按什么填写
  • 同比增长怎么算出来的
  • 支票取钱不是本人要带什么
  • mysql5.6下载
  • sqlserver删除重复
  • mysql转换数据类型
  • 苹果电脑mac如何连接打印机
  • linux中字符设备有哪些
  • xp系统硬盘管理
  • mac系统怎么把文件移到文件夹
  • 照相机文件名
  • 同步数据和异步数据的区别
  • linux dev/sr0
  • 批处理传输文件夹到ftp
  • cocos2dx 3.0 quick lua schedler
  • jquery对动态生成的进行操作
  • css渲染规则
  • node 操作mysql
  • javascript总结
  • 陕西电子税务局新版
  • 河南12306区号
  • 广西残疾人保障金比例
  • 消费税税目税率表2019
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设