美文网首页
treeShaking和sideEffects详解

treeShaking和sideEffects详解

作者: 24K纯帅豆 | 来源:发表于2020-08-05 10:01 被阅读0次

什么是treeShaking?

  • treeShaking 是一个术语,通常用于描述移除 JavaScript 上下文中的未引用代码(dead-code)。

treeShaking有什么用?

  • 至于说有什么用呢?它的作用就是将程序中没有用到的代码在打包编译的时候都删除掉,这样能减少打包后包的体积大小,减少程序执行的时长

和传统DCE(Dead Code Elimination)有什么区别?

  • 传统DCE是消除不可能执行的代码,而treeShaking虽然也是DCE新的实现方式,但是它是通过消除没有用到的代码来达到目的

Dead Code的特征:

  • 代码不会被执行,不可到达
  • 代码执行的结果不会被用到
  • 代码只会影响死变量(只写不读)

在JS中是什么在做DCE?

首先肯定不是浏览器做DCE,因为当我们的代码送到浏览器,那还谈什么消除无法执行的代码来优化呢,所以肯定是送到浏览器之前的步骤进行优化。传统DCE使用到的是代码压缩优化工具uglify来完成的;而treeShaking则是通过webpack来完成的;

什么是sideEffects?

其主要功能是让 webpack 去除 treeShaking 带来副作用的代码。怎么去理解这个副作用呢?副作用可以理解成某个模块执行时除了导出成员之外所作的事情,比如我们修改了window上的属性,或者提供某个polyfill;如果没有这些副作用的话那么webpack就会清除没有用的代码,也就是上面说的treeShaking。

sideEffects写法?

  • true/false,false 为了告诉 webpack 我这个 npm 包里的所有文件代码都是没有副作用的
  • 数组,数组则表示告诉 webpack 我这个 npm 包里指定文件代码是没有副作用的

相关文章

网友评论

      本文标题:treeShaking和sideEffects详解

      本文链接:https://www.haomeiwen.com/subject/olrhshtx.html