/**

  • 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) {"

添加注释:generate 		const chunkGraph compilation chunk = this;		const 			runtimeTemplate			outputOptions 				chunkLoadingGlobal				hotUpdateGlobal				crossOriginLoading				scriptType					 = compilation;

原文地址: https://www.cveoy.top/t/topic/hkls 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录