Skip to content

Commit 8a995da

Browse files
committed
Split the map among the chunks
1 parent 685cbcd commit 8a995da

File tree

3 files changed

+25
-33
lines changed

3 files changed

+25
-33
lines changed

lib/Chunk.js

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -607,10 +607,10 @@ class Chunk {
607607
return result;
608608
}
609609

610-
getChildIdsByOrdersMap(includeImmediateChildren) {
610+
getChildIdsByOrdersMap() {
611611
const chunkMaps = Object.create(null);
612612

613-
function addChunkChildrenToMap(chunk) {
613+
for (const chunk of this.getAllAsyncChunks()) {
614614
const data = chunk.getChildIdsByOrders();
615615
for (const key of Object.keys(data)) {
616616
let chunkMap = chunkMaps[key];
@@ -620,15 +620,6 @@ class Chunk {
620620
chunkMap[chunk.id] = data[key];
621621
}
622622
}
623-
624-
for (const chunk of this.getAllAsyncChunks()) {
625-
addChunkChildrenToMap(chunk);
626-
}
627-
628-
if (includeImmediateChildren) {
629-
addChunkChildrenToMap(this);
630-
}
631-
632623
return chunkMaps;
633624
}
634625

lib/web/JsonpChunkTemplatePlugin.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@ class JsonpChunkTemplatePlugin {
3131
);
3232
if (entries.length > 0) {
3333
source.add(`,${JSON.stringify(entries)}`);
34+
} else {
35+
source.add(`,null`);
36+
}
37+
if (
38+
chunk.getChildIdsByOrders().prefetch &&
39+
chunk.getChildIdsByOrders().prefetch.length
40+
) {
41+
source.add(
42+
`,${JSON.stringify(chunk.getChildIdsByOrders().prefetch)}`
43+
);
3444
}
3545
source.add("])");
3646
return source;

lib/web/JsonpMainTemplatePlugin.js

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,6 @@ class JsonpMainTemplatePlugin {
330330
(source, chunk, hash) => {
331331
if (needChunkLoadingCode(chunk)) {
332332
const withDefer = needEntryDeferringCode(chunk);
333-
const chunkMap = chunk.getChildIdsByOrdersMap(true).prefetch;
334333
return Template.asString([
335334
source,
336335
"",
@@ -340,6 +339,7 @@ class JsonpMainTemplatePlugin {
340339
"var chunkIds = data[0];",
341340
"var moreModules = data[1];",
342341
withDefer ? "var executeModules = data[2];" : "",
342+
"var prefetchChunks = data[3] || []",
343343
'// add "moreModules" to the modules object,',
344344
'// then flag all "chunkIds" as loaded and fire callback',
345345
"var moduleId, chunkId, i = 0, resolves = [];",
@@ -382,31 +382,18 @@ class JsonpMainTemplatePlugin {
382382
: "",
383383
"",
384384
"// chunk prefetching for javascript",
385-
"",
386-
`var chunkPrefetchMap = ${JSON.stringify(chunkMap, null, "\t")}`,
387-
"",
388-
"for(let j = 0;j < chunkIds.length; j++) {",
385+
"var head = document.getElementsByTagName('head')[0];",
386+
"prefetchChunks.forEach(function(chunkId) {",
389387
Template.indent([
390-
"chunkId = chunkIds[j];",
391-
"var chunkPrefetchData = chunkPrefetchMap[chunkId];",
392-
"if(chunkPrefetchData) {",
388+
"if(installedChunks[chunkId] === undefined) {",
393389
Template.indent([
394-
"var head = document.getElementsByTagName('head')[0];",
395-
"chunkPrefetchData.forEach(function(chunkId) {",
396-
Template.indent([
397-
"if(installedChunks[chunkId] === undefined) {",
398-
Template.indent([
399-
"installedChunks[chunkId] = null;",
400-
mainTemplate.hooks.linkPrefetch.call("", chunk, hash),
401-
"head.appendChild(link);"
402-
]),
403-
"}"
404-
]),
405-
"});"
390+
"installedChunks[chunkId] = null;",
391+
mainTemplate.hooks.linkPrefetch.call("", chunk, hash),
392+
"head.appendChild(link);"
406393
]),
407394
"}"
408395
]),
409-
"}"
396+
"});"
410397
]),
411398
"};",
412399
withDefer
@@ -474,7 +461,11 @@ class JsonpMainTemplatePlugin {
474461
if (needChunkLoadingCode(chunk)) {
475462
return Template.asString([
476463
source,
477-
`webpackJsonpCallback([${JSON.stringify(chunk.ids)}, {}])`
464+
`webpackJsonpCallback([${JSON.stringify(
465+
chunk.ids
466+
)}, {}, null, ${JSON.stringify(
467+
chunk.getChildIdsByOrders().prefetch
468+
)}])`
478469
]);
479470
}
480471
return source;

0 commit comments

Comments
 (0)