位置: 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)

  • 关闭页面快捷键ctrl加什么(关闭页面快捷键ctrl加D)

    关闭页面快捷键ctrl加什么(关闭页面快捷键ctrl加D)

  • 哔哩哔哩电视版叫什么(哔哩哔哩电视版怎么搜索up主)

    哔哩哔哩电视版叫什么(哔哩哔哩电视版怎么搜索up主)

  • vivos6是否有视频美颜功能(vivos6支持视频美颜吗)

    vivos6是否有视频美颜功能(vivos6支持视频美颜吗)

  • 苹果max保修范围(xsmax保修期多久)

    苹果max保修范围(xsmax保修期多久)

  • 抖音测评是什么意思(抖音视频测评)

    抖音测评是什么意思(抖音视频测评)

  • 微信交电费最晚多久到账(微信交电费最晚到几点)

    微信交电费最晚多久到账(微信交电费最晚到几点)

  • 电池鼓包怎么处理可以继续使用(电池鼓包了有什么影响)

    电池鼓包怎么处理可以继续使用(电池鼓包了有什么影响)

  • 微信生活缴费网络异常(微信生活缴费网络异常请稍后再试)

    微信生活缴费网络异常(微信生活缴费网络异常请稍后再试)

  • 冻结了微信号会怎样(冻结了微信号会被冻结吗)

    冻结了微信号会怎样(冻结了微信号会被冻结吗)

  • 微信销号后聊天记录还有吗(微信销号后聊天记录法院能查到吗)

    微信销号后聊天记录还有吗(微信销号后聊天记录法院能查到吗)

  • surface触控笔点屏幕没反应(surface触控笔点击屏幕没反应)

    surface触控笔点屏幕没反应(surface触控笔点击屏幕没反应)

  • 大疆fpv模式是什么意思(大疆fpv使用教程)

    大疆fpv模式是什么意思(大疆fpv使用教程)

  • 电脑怎么下载excel表格软件(电脑怎么下载EXCL)

    电脑怎么下载excel表格软件(电脑怎么下载EXCL)

  • 为什么xr信号不好(xr手机信号突然不好)

    为什么xr信号不好(xr手机信号突然不好)

  • 菜鸟驿站怎么取消送货上门(菜鸟驿站怎么取件扫码)

    菜鸟驿站怎么取消送货上门(菜鸟驿站怎么取件扫码)

  • 耳机反磁是什么意思(蓝牙耳机的反磁是什么意思)

    耳机反磁是什么意思(蓝牙耳机的反磁是什么意思)

  • 二手数据是指什么(什么是二手数据?二手数据有哪些优点?)

    二手数据是指什么(什么是二手数据?二手数据有哪些优点?)

  • iphonexsmax有nfc功能么(iphonexsmax nfc怎么用)

    iphonexsmax有nfc功能么(iphonexsmax nfc怎么用)

  • 西瓜视频文件夹在哪(西瓜视频文件夹在哪里找)

    西瓜视频文件夹在哪(西瓜视频文件夹在哪里找)

  • 如何查手机剪贴板(如何查手机剪贴板资料)

    如何查手机剪贴板(如何查手机剪贴板资料)

  • 抖音如何配一分钟音乐(抖音如何配一分音乐)

    抖音如何配一分钟音乐(抖音如何配一分音乐)

  • 华为cltal00是什么型号(华为cl00是什么型号手机)

    华为cltal00是什么型号(华为cl00是什么型号手机)

  • qq帆船是两个人都有吗(qq的帆船是双方显示还是单方也能显示)

    qq帆船是两个人都有吗(qq的帆船是双方显示还是单方也能显示)

  • nalntsrv.exe - nalntsrv是什么进程 有什么用

    nalntsrv.exe - nalntsrv是什么进程 有什么用

  • 帝国CMS获取产品或文章浏览记录的方法(帝国cms商城教程)

    帝国CMS获取产品或文章浏览记录的方法(帝国cms商城教程)

  • 进口货物增值税纳税人是谁
  • 六税两费都包括哪些税费种?
  • 债务重组无形资产的评估费
  • 带薪年休假如果当年离职补交的年休假钱需要扣个税嘛
  • 纳税期限届满
  • 申报增值税之后怎么做账
  • 套期工具是资产还是负债
  • 企业合并股份比例
  • 个人提供劳务给个人,不开票要缴税吗
  • 专用基金计入什么科目
  • 在建工程账务处理流程
  • 企业股权转让收入申报表填哪里
  • 营业收入管理也是企业财务管理的基本内容
  • 购进货品未取得发票如何处理
  • 将自制的一批新产品用于对外投资,生产成本为300000
  • 汇算清缴前未取得发票账务处理
  • 合并报表中长期股权投资包括
  • 一般纳税人增值税优惠政策
  • 流转税通俗举例
  • 预缴的附加税还可以扣减吗
  • 甲供工程会计分录
  • 非居民企业指定扣缴合同备案
  • 汇总纳税企业的分公司如何享受税收优惠政策
  • 异地取款还有手续费吗
  • 发票认证的三种方式
  • 如何恢复微信语言聊天
  • 宏病毒感染的文件类型是什么
  • php mktime函数
  • 怎么隐藏权限
  • 苹果电脑出现macos什么意思
  • 收到客户预付的保费90000元,存入银行
  • php for break
  • 农村个体户需要报税吗
  • 长期借款利息调整会计分录
  • 应付职工薪酬年末结转到哪个科目
  • 管家婆实物仓库怎么用
  • pytorch 例子
  • 代发工资的会计科目
  • 专项应付款怎么转固定资产
  • phpcms v9官网
  • 帝国cms灵动标签调用标题图片
  • linux中ubuntu安装教程
  • 购买工业用地
  • SQL Server 2005通用分页存储过程及多表联接应用
  • 福利费入账需要发票吗
  • 税控盘减免税款分录
  • 车辆按揭贷款需要什么
  • 存量资金上缴财政怎么做账
  • 销售自行开发的房地产项目的增值税
  • 房租押金是什么意思?
  • 转帐支票遗失怎么办
  • 银行收到货款会计分录怎么做
  • 公司注销后原有未使用的包装还可以用吗怎么办
  • 长期挂账的往来款税务处理
  • 售后回租租赁合同买车有效吗
  • 其他非流动资产是金融资产吗
  • 高新企业认定条件2022上海
  • sql server语句查询
  • mysql innode
  • mysql里面的索引
  • windows安装mysql5.7详细步骤
  • 利用rpm安装软件包时,应使用命令选项
  • mysql批量更新多条数据
  • 苹果MAC电脑如何设置开机密码
  • 出现早搏就一辈子无法治愈吗
  • 任务管理器打不开怎么强制关闭电脑程序
  • win7唤醒后屏幕黑屏
  • linux查看系统配置内存大小
  • android binary xml
  • python控制台怎么用
  • 基于JavaScript实现的可试化工具是
  • js校验密码复杂度
  • 轮播图简单实现
  • 成都所见所得科技有限公司是什么平台
  • 教师职称申报申请
  • 税务稽查人员工作总结
  • 小规模纳税人租赁房屋税率
  • 济南市市中区二手房
  • 河北省餐饮经营单位安全生产规定
  • 华数tv业务认证账号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设