treeSharking

treeSharking
  • 起源于DCE(dead code elimination):
    传统编译器对代码的优化,移除不会执行、不可达的代码,移除未使用的变量

  • rollup.Tree-shaking和传统的压缩算法uglify
    rollup本身只移除没有使用到的变量、函数
    uglify会移除不会执行不可达到的代码, 比如:if(false){}、多个return

  • webpack.Tree-shaking
    tree-shaking的消除原理是依赖于ES6的模块特性:引用在代码顶层,静态引用
    glify目前不会跨文件去做DCE,所以上面这种情况,uglify是不能优化的
    而Tree-shaking、rollup都可以解决这点
    在一些特殊情况下webpack.Tree-shaking、rollup.Tree-shakin都无法将未使用的类去除


    image.png

原因在于: js本身是动态语言,并且sideEffect是广泛存在的

你可能感兴趣的:(treeSharking)