webpack中的chunk 和 bundle 有什么区别 ?
刚好遇到这个问题进上面的连接里面逛了一圈,我是这么理解的.
所以上面的三个文件都是模块,假使他们都是使用commonJS或者ESM编写的模块.
上面的例子中只提供了入口文件的配置,操作了三个模块,输出了两个文件.
foo
操作的是一个两个模块的集合被视为一个chunks但是如果在这个两个文件中没有在引入其他文件的话,那么他就是最终的Bundle.
而bar
同理操作的是一个chunk如果没有继续引入其他文件的话输出的bundle就等于chunk,所以区别不太明显.
为了优化最后生产出的bundle数量可能不等于chunk的数量因为有可能多个chunk被组合到了一个Bundle中,当然还有其他情况.
a chunk is a group of modules within the webpack process, a bundle is an emitted chunk or set of chunks.
一个块是webpack进程中的一组模块,一个bundle是一个发出的块或一组块。
5 回答1.9k 阅读
1 回答2.8k 阅读
2 回答550 阅读✓ 已解决
1 回答1.5k 阅读
1 回答607 阅读
638 阅读
375 阅读
module:对于webpack来说,所有的资源(
.js
、.css
、.png
)都是moduleentry-point:生成依赖图的入口;只能是
.js
文件(parcel
能使用其他模块(.html
)做为入口,生成依赖图)chunk:是webpack内部运行时的概念;一个chunk是对依赖图的部分进行封装的结果(
`Chunk
the class is the encapsulation for parts of your dependency graph`);可以通过多个entry-point来生成一个chunkchunk可以分为三类;
entry chunk
initial chunk
normal chunk
require.ensure
、System.import
、import()
异步加载进来的module
,会被放到normal chunk中bundle:最终输出的chunk在用户端,被称之为bundle;一般一个chunk对应一个bundle,只有在配置了sourcemap时,才会出现一个chunk对应多个bundle的情况;
main.js中引入了gloabl.css;
module
entry-point
chunk
bundle
entry的两个key对应两个chunk,最终会输出两个bundle;main.js、test.js、other.js都是entry-point
以上是自己的理解,可能有误,欢迎指正;
参考
https://github.com/webpack/webpack.js.org/issues/970
https://juejin.im/post/5cede821f265da1bbd4b5630
https://juejin.im/post/5d2b300de51d45775b419c76