25.Webpack和Rollup打包优化之Tree shaki

2021-12-22  本文已影响0人  wo不是黄蓉

灵感来源于:Tree Shaking性能优化实践 原理我这边就不多做介绍了,主要看上面引用的文章,写这篇文章的主要目的是

为了方便我们这些小白想根据上面的文章实践一把,但是遇到种种的报错问题&&解决方案&&一些基础知识的查漏补缺



代码演示:

let foo = () => {
 let x = 1;
 if (false) {
 console.log("never reached");
 }
 let a = 3;
 return a;
};
let baz = () => {
 var x = 1;
 console.log(x);
 post();
 function unused() {
 return 5;
 }
 return x;
 let c = x + 3;
 return c;
};
baz();

const promise = [new Promise(() => {}), new Promise(() => {})];
promise.map((promise) => {
 console.log(promise);
});

测试对比两个打包工具对Dead Code的打包结果

打包对比结果:中间是源代码,左边是rollup打包结果,右边是webpack打包结果对比。

image-20211222214353073.png

结论:

测试 对比两个打包工具对引用无用function的打包结果

code.js中使用util.js中的post方法。

rollup没有做其他的配置,webpack配置usedExports:true

image-20211222221741407.png

结论:

usedExports:true:编译时分析出哪些export用到了,哪些没有用到,然后进行标记。

总结:出现上面结果的主要是因为所谓的副作用的影响。在es5->es6的过程中使用了babel,由于babel的编译,一些没有副作用的代码也会被标记成有副作用的。webpack没有完整的流程分析,不能更好的判断代码是否产生了副作用。

至此结束,后面还有一篇百度前端团队大佬们分享的另一篇文章写的是对组件库,CSS,提取公共代码等的优化,戳我


END结束语:相对于webpack的打包,对比了一下rollup之后,对其提不起什么兴趣了,给我的直观感受

上一篇 下一篇

猜你喜欢

热点阅读