返回列表 发新帖

262

主题

262

帖子

810

积分

超级版主

Rank: 8Rank: 8

积分
810
发表于 2017-6-21 14:15:41 | 显示全部楼层 | 阅读模式
Tree-shaking 是无用代码移除(DCE, dead code elimination)的一个方法,但和传统的方法不太一样。Tree-shaking 找到需要的代码,灌入最终的结果;传统 DCE 找到执行不到的代码,从 AST 里清除。(在我看来传统的这种方式更应该被称为 tree-shaking,即摇一下把 AST 中的 dead branch 给抖下来。)作者还用了一个和 DCE 相对应的说法:Live code inclusion。这种方式在目前流行的模块式开发、最后通过 entry 打包出 bundle 的模式下,才有实际意义。有人总结了一个定义:DCE 消灭不可能执行的代码,tree-shaking 消灭没有用到的代码。

1.jpg
我个人的理解是,在你需要处理的代码对外不产生副作用时, tree-shaking 效果还不错,rollup.js 生成的 bundle 会更小一些。看一下它的在线 demo 就知道,模块合并以后都在同一个作用域下,直接用变量名就可以访问各个模块的接口;而不是 webpack 这样每个模块外还要包一层函数定义,再通过合并进去的 define/require 相互调用。Tree-shaking 不是代码压缩,所以还是得配合压缩工具来用。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则