先確定一點腹尖,我們知道js萬物皆對象柳恐,那么:webpack中萬物皆模塊。因為它按照模塊來分析热幔。
什么是module
只要可以引用的乐设,它們都是module。例如import断凶、require或者css的@import伤提。
例如:
// index.js文件
import _ from 'lodash';
console.log(_.join(['大郎', '該', '吃藥了'], ' '));
這是引入一個lodash模塊巫俺,同時對于打包分析的來說呈現(xiàn)的結(jié)果是:
它是一個module
什么是chunk
bundle 由 chunk 組成认烁。通常 chunk 會直接對應(yīng)所輸出的 bundle,但是有一些配置并不會產(chǎn)生一對一的關(guān)系。
通過import或require引入的module却嗡,就是chunk舶沛。所以有時候chunk是一個最終輸出的js文件,有時只是組成bundle中的一部分
什么是bundle
最終的輸出文件就是bundle(由chunk組成)窗价。
看示例代碼:
// index.js文件
import _ from 'lodash';
console.log(_.join(['大郎', '該', '吃藥了'], ' '));
// another.js文件
import _ from 'lodash';
console.log(_.join(['乖', '快', '吃吧'], ' '));
然后運行查看看分析圖:
如上就是兩個大的bundle
對應(yīng)的從web加載上看:
這就是兩個js文件如庭,是兩大bundle(對于最終加載來說其實也是js文件)
其中,代碼分離撼港,即splitchunks是離chunks坪它。
關(guān)系圖
他們的區(qū)別關(guān)系有兩種:
或者是: