请问老师关于CJS和TreeShaking
来源:16-4 commonjs和ES6-Module的区别
hy_wang
2021-01-22
请问下老师,这里讲到CJS无法使用Tree Shaking
,但是我在使用Rollup
时看到使用了CJS进行Tree Shaking
,rollup中cjs竟然也可以使用exports.xx的形式进行TreeShaking。
请问老师CJS好像也是可以使用Tree Shaking,不是说CJS是动态引入无法使用Tree Shaking吗。
我也不是特别明白为什么ROllup可以,就比如我要使用CJS
引入一个工具文件的一个方法,当用户点击按钮触发事件的时候才会执行引入,可是为什么RollUp就能到达这个效果。
写回答
1回答
-
双越
2021-01-22
commonjs 也可以可以做到部分的 tree-shaking 的,例如 https://github.com/indutny/webpack-common-shake
但是,因为 commonjs 毕竟是动态引入的,还是会有一些限制 https://github.com/indutny/webpack-common-shake#limitations 。这是语法的限制,无论 webpack 和 rollup 都会有。
另外,“当用户点击按钮触发事件的时候才会执行引入”—— 这个不是 tree-shaking ,这就是异步加载。
032021-01-23
相似问题