02. 构建工具
Web 构建与打包工具
构建工具的发展历史
自
此时在开发流程中需要针对每个入口文件使用
第三纪元

图中右侧的
这些工具和模式跟
构建工具的问题
小模块
另一个笔者想提到的所谓小模块问题,模块打包工具能够有效地帮我们自动处理模块之间的依赖关系,不过因为现在我们在进行模块打包的同时会进行大量的转换或者
// index.js
var total = 0;
total += require("./module_0");
total += require("./module_1");
total += require("./module_2");
// etc.
console.log(total);
// module_0.js
module.exports = 0;
// module_1.js
module.exports = 1;
我们如果使用
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
module.exports = 0
},{}],2:[function(require,module,exports){
module.exports = 1
},{}],3:[function(require,module,exports){
module.exports = 10
},{}],4:[function(require,module,exports){
module.exports = 100
// etc.
而
(function () {
'use strict';
var module_0 = 0
var module_1 = 1
// ...
total += module_0
total += module_1
// etc.
不过在大量模块的情况下,任何一种打包工具包体的增长速度会随着模块数的增长而变大:
Bundler | 100 modules | 1000 modules | 5000 modules |
---|---|---|---|
browserify | 7982 | 79987 | 419985 |
browserify-collapsed | 5786 | 57991 | 309982 |
webpack | 3955 | 39057 | 203054 |
rollup | 1265 | 13865 | 81851 |
closure | 758 | 7958 | 43955 |
rjs | 29234 | 136338 | 628347 |
rjs-almond | 14509 | 121612 | 613622 |