请问老师关于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 ,这就是异步加载。

0
3
双越
回复
hy_wang
你理解的没问题。
2021-01-23
共3条回复

Node.js+Express+Koa2+Nest.js 开发服务端

从入门到实战,一站式掌握 Node.js+Express+Koa2

4051 学习 · 2006 问题

查看课程