什么是tree-shaking?
42. 什么是tree-shaking?
Tree-shaking
是一个用于优化 JavaScript
应用程序的技术,它可以在打包过程中去除无用的代码,从而减小最终打包后的文件大小。
Tree-shaking
的基本原理是通过静态分析的方式识别和删除不被使用的代码。在 JavaScript
应用程序中,往往会引入许多库和模块,但是并不是所有的代码都会被使用。Tree-shaking
可以自动地分析和删除这些无用的代码,从而减小打包后的文件大小。
在实际开发中,Tree-shaking
技术通常是通过使用 ES6
模块系统来实现的。在 ES6
模块系统中,每个模块都被视为一个独立的作用域,它的导出和导入关系是静态的,这使得编译器可以轻松地分析和优化模块之间的依赖关系。
为了让 Tree-shaking
技术能够生效,需要满足以下几个条件:
代码必须使用
ES6
模块系统。代码必须是静态的,不能有动态的引用和执行代码。
代码必须使用纯函数或者纯表达式,不能有副作用。
在实际应用中,Tree-shaking
技术通常是和其他打包工具和技术一起使用,如 webpack
、Rollup
、Babel
等等。在使用这些工具时,可以通过配置选项来开启或关闭 Tree-shaking
技术,并对代码进行更细粒度的优化。
什么是tree-shaking?相关推荐
- Webpack进阶(一) tree shaking与不同mode
Tree Shaking 生产环境去除没有使用到的内容(开发环境没有删除,会影响调试) 只支持ESM规范(静态引入,编译时引入),不支持CJS(动态引入,执行时引入) // webpack.confi ...
- webpack学习(四) -- css tree shaking
css tree shaking 我们和webpack(三)一样,用案例说话 安装css需要的两个loader,css-loader 和style-loader npm install css-loa ...
- demo10 关于JS Tree Shaking
1.什么是 tree shaking 借助于 es6 (es2015) 模块系统 (import 和 export) 的静态解析,webpack 能够利用 Tree Shaking 进行按需加载,移除 ...
- Webpack 实现 Tree shaking 的前世今生
作者 | 左琳 责编 | 欧阳姝黎 前言 如果看过 rollup 系列的这篇文章 - 无用代码去哪了?项目减重之 rollup 的 Tree-shaking,那你一定对 tree-shak ...
- webpack构建中tree shaking、scope Hoisting(面试题)
一.tree shaking (摇树优化) tree shaking概念: 1个模块可能有多个方法,只要其中某个方法使用了,整个文件会被打到bundle中 tree shaking 只将用到的方法打到 ...
- webpack高级应用篇(九):tree shaking(usedExports) 与 sideEffects
目录 tree shaking(usedExports) tree shaking 前 tree shaking 后 sideEffects(副作用) 解释 tree shaking 和 `sideE ...
- Tree Shaking和sideEffects配置
需要将 mode 配置设置成 development,以确定 bundle 不会被压缩: const path = require('path');module.exports = {entry: ' ...
- 【tree shaking】Tree-shaking之副作用
前言 Tree-shaking,顾名思义"摇树".webpack会在生产环境打包时"摇"掉无用的,死的代码,也就是dead code. 由于Tree-shaki ...
- 配置Tree Shaking来减少JavaScript的打包体积
译者按: 用Tree Shaking技术来减少JavaScript的Payload大小 原文: Reduce JavaScript Payloads with Tree Shaking 译者: Fun ...
- Angular 应用里的摇树优化 - tree shaking
Tree Shakeable Providers and Services in Angular Angular 最近推出了一项新功能,Tree Shakeable Providers. Tree S ...
最新文章
- 【洛谷P1508】吃吃吃
- 5.Redis 发布订阅
- lsb_release -a 查询系统版本
- transition过渡的趣玩
- Python使用UDP协议打造在线时间服务器
- java poi 导出excel 速度慢_java POI技术之导出数据优化(15万条数据1分多钟)
- string input must not be null解决办法
- FinTech领域的风险控制——风险篇
- excel两个表格数据对比_Excel表格中数据比对和查找的几种技巧
- python爬虫qq好友信息_qq好友空间说说爬虫
- 微擎支付返回商户单号_ThinkPHP6对接实现微信H5支付
- 编译错误:找不到工程或库
- 【Matlab编程】新手入门第五天
- Java面试题之Redis的大坑
- matlab曲线拟合 函数 用法以及例子
- 15个Python入门小程序,同事准时下班“小技巧”被我发现了
- 爱因斯坦阶梯问题及寻找完全数问题
- Java学习查漏补缺及知识点整理
- android 实用干货 - 收藏集 - 掘金
- 检测打印机状态(VB实现)