添加注释:generate const chunkGraph compilation chunk = this; const runtimeTemplate outputOptions chunkLoadingGlobal hotUpdateGlobal crossOriginLoading scriptType = compilation;
/**
- Generate the code for the JsonpChunkLoadingRuntimeModule
- @returns {string} The generated code
*/
generate() {
const { chunkGraph, compilation, chunk } = this;
const {
runtimeTemplate,
outputOptions: {
chunkLoadingGlobal,
hotUpdateGlobal,
crossOriginLoading,
scriptType
}
} = compilation;
const globalObject = runtimeTemplate.globalObject;
const { linkPreload, linkPrefetch } =
JsonpChunkLoadingRuntimeModule.getCompilationHooks(compilation);
const fn = RuntimeGlobals.ensureChunkHandlers;
const withBaseURI = this._runtimeRequirements.has(RuntimeGlobals.baseURI);
const withLoading = this._runtimeRequirements.has(
RuntimeGlobals.ensureChunkHandlers
);
const withCallback = this._runtimeRequirements.has(
RuntimeGlobals.chunkCallback
);
const withOnChunkLoad = this._runtimeRequirements.has(
RuntimeGlobals.onChunksLoaded
);
const withHmr = this._runtimeRequirements.has(
RuntimeGlobals.hmrDownloadUpdateHandlers
);
const withHmrManifest = this._runtimeRequirements.has(
RuntimeGlobals.hmrDownloadManifest
);
const withPrefetch = this._runtimeRequirements.has(
RuntimeGlobals.prefetchChunkHandlers
);
const withPreload = this._runtimeRequirements.has(
RuntimeGlobals.preloadChunkHandlers
);
const chunkLoadingGlobalExpr =
${globalObject}[${JSON.stringify( chunkLoadingGlobal )}]; const conditionMap = chunkGraph.getChunkConditionMap(chunk, chunkHasJs); const hasJsMatcher = compileBooleanMatcher(conditionMap); const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
const stateExpression = withHmr
? ${RuntimeGlobals.hmrRuntimeStatePrefix}_jsonp
: undefined;
return Template.asString([
withBaseURI
? Template.asString([
${RuntimeGlobals.baseURI} = document.baseURI || self.location.href;
])
: "// no baseURI",
"",
"// object to store loaded and loading chunks",
"// undefined = chunk not loaded, null = chunk preloaded/prefetched",
"// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded",
var installedChunks = ${ stateExpression ? ${stateExpression} = ${stateExpression} || : "" }{,
Template.indent(
Array.from(initialChunkIds, id => ${JSON.stringify(id)}: 0).join(
",\n"
)
),
"};",
"",
withLoading
? Template.asString([
${fn}.j = ${runtimeTemplate.basicFunction( "chunkId, promises", hasJsMatcher !== false ? Template.indent([ "// JSONP chunk loading for javascript", var installedChunkData = ${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;`,
'if(installedChunkData !== 0) { // 0 means "already installed".',
Template.indent([
"",
'// a Promise means "currently loading".',
"if(installedChunkData) {"
原文地址: https://www.cveoy.top/t/topic/hkls 著作权归作者所有。请勿转载和采集!