webpack与rollup打包工具

webpack与rollup打包工具

 
 

一、rollup

 rollup 是一个 JavaScript 模块打包器,可以将小块代码编译成大块复杂的代码,
例如 library 或应用程序。rollup 对代码模块使用新的标准化格式(es6模块语法)

特点:Tree-shaking

首先,ES6 模块语法(import、export)实现了静态加载。
rollup 静态分析了代码中的 import , 并将排除任何未实际引用的代码
所以可以生成轻量、快速,以及低复杂度的 library 和应用程序。

示例

//foo.js
const foo = () => {
    console.log('hello rollup');
};
export { foo };

 

//index.js
import { foo } from './foo';
foo();

打包后的结果

(function() {
    'use strict';
    var foo = function foo() {
        console.log('jx rollup');
    };
    foo();
}());

即rollup的解释是在构建代码阶段,在使用ES6模块化的代码中,借助ES6模块的静态分析,会对你的代码进行静态分析,只打包使用到的代码,减少代码体积。

 

二、在webpack中使用tree-shaking

在webpackde的构建结果中,执行自治性函数,在Manifest记录依赖关系,通过_webpackrequire__加载,在__webpack_module_cache__记录缓存。

需要使用uglify插件压缩无用代码。

 

三、总结

webpack构建体积比rollup的格式大。

代码执行的时候,rollup中iife输出格式,代码执行的速度更快,webpack构建出来的还有依赖查找,而且每个模块通过一个函数包裹形式,执行的时候,就形成了一个个的闭包,占用了内存,当然可以在webpack3使用 ConcatenationPlugin 插件优化这样的输出格式,打包到一个依赖中。


webpack做的tree shaking主要是依赖 UglifyJS 来做的,webpack只是识别无用的export,并且不导出,剩下来的Dead code elimation 都是有Uglify来做。

 

 

posted on 2022-10-21 18:51  漫思  阅读(57)  评论(0编辑  收藏  举报

导航