【问题标题】:What is an async chunk in webpack?webpack 中的异步块是什么?
【发布时间】:2018-11-16 17:43:48
【问题描述】:
【问题讨论】:
标签:
javascript
webpack
code-splitting
【解决方案1】:
从webpack源代码中读取Chunk实体,我发现了以下代码:
getAllAsyncChunks() {
const queue = new Set();
const chunks = new Set();
const initialChunks = intersect(
Array.from(this.groupsIterable, g => new Set(g.chunks))
);
for (const chunkGroup of this.groupsIterable) {
for (const child of chunkGroup.childrenIterable) {
queue.add(child);
}
}
for (const chunkGroup of queue) {
for (const chunk of chunkGroup.chunks) {
if (!initialChunks.has(chunk)) {
chunks.add(chunk);
}
}
for (const child of chunkGroup.childrenIterable) {
queue.add(child);
}
}
return chunks;
}
我在这里看到的是异步块是块组中最初不存在的块(if (!initialChunks.has(chunk)))。这让我认为异步块是之后加载的块,例如在运行时。
所以如果我做对了,前面的例子会产生一个异步块:
if (myCondition) {
import('myLib').then(myLib => {
// Do something
});
}
热重载也可能是这种情况。希望有人能证实这一点。
编辑:
正如@dawncold 在评论中提到的那样,nice article 首先解释了什么是块。