Compiler ä½¿ç¨ NormalModuleFactory 模åçæå类模åãä»å
¥å£ç¹å¼å§ï¼æ¤æ¨¡åä¼åè§£æ¯ä¸ªè¯·æ±ï¼è§£ææä»¶å
å®¹ä»¥æ¥æ¾è¿ä¸æ¥ç请æ±ï¼ç¶åéè¿åè§£ææè¯·æ±ä»¥åè§£ææ°çæä»¶æ¥ç¬åå
¨é¨æä»¶ã卿åé¶æ®µï¼æ¯ä¸ªä¾èµé¡¹é½ä¼æä¸ºä¸ä¸ªæ¨¡åå®ä¾ã
NormalModuleFactory ç±»æ©å±äº Tapable å¹¶æä¾äºä»¥ä¸ççå½å¨æé©åã
ä½ å¯ä»¥å使ç¨ç¼è¯å¨é©å䏿 ·ä½¿ç¨å®ä»¬ï¼
NormalModuleFactory.hooks.someHook.tap(/* ... */);
NormalModuleFactory å建äºå¯ç± HookMaps 访é®ç Parser å Generator å®ä¾ãåæ¶å¿
é¡»ä¼ å
¥ identifier æè½ä½¿ç¨ä»¥ä¸ä»£ç ï¼
NormalModuleFactory.hooks.someHook.for('identifier').tap(/* ... */);ä¸ compiler 䏿 ·ï¼tapAsync å tapPromise æ¯å¦å¯ç¨
åå³äºé©åçç±»åã
AsyncSeriesBailHook
å½éå°æ°çä¾èµé¡¹è¯·æ±æ¶è°ç¨ãå¯ä»¥éè¿è¿å false æ¥å¿½ç¥ä¾èµé¡¹ãå¦åï¼è¿å undefined 以继ç»ã
resolveDataAsyncSeriesBailHook
å¨åå§åè§£æä¹åè°ç¨ãå®åºè¯¥è¿å undefined 以继ç»ã
resolveDataAsyncSeriesBailHook
å¨è¯·æ±è¢«è§£æä¹åè°ç¨ãå¯ä»¥éè¿è¿å false æ¥å¿½ç¥ä¾èµé¡¹ãè¿åä¸ä¸ªæ¨¡åå®ä¾å°ç»æè¿ç¨ãå¦åï¼è¿å undefined 以继ç»ã
resolveDataAsyncSeriesBailHook
å¨è§£æç¬¦åç»ä¸èµæºæ å¿ç¬¦æ¹æ¡(URI)ç请æ±ä¹åè°ç¨ã
resolveDataAsyncSeriesBailHook
å¨è¯·æ±è§£æåè°ç¨ã
resolveDataAsyncSeriesBailHook
å¨å建 NormalModule å®ä¾ä¹åè°ç¨ã
createData resolveDataSyncWaterfallHook
å¨å建 NormalModule å®ä¾åè°ç¨ã
module createData resolveDataHookMap<SyncBailHook>
å¨ Parser å®ä¾å建ä¹åè°ç¨ãparserOptions æ¯ module.parser ä¸å¯¹åºæ è¯ç¬¦æç©ºå¯¹è±¡çé项ã
é©ååæ°ï¼identifier
åè°åæ°ï¼parserOptions
HookMap<SyncHook>
å¨å建 Parser å®ä¾å触åã
é©ååæ°ï¼identifier
åè°åæ°ï¼parser parserOptions
å¯è½çé»è®¤æ è¯ç¬¦ï¼
javascript/autojavascript/dynamicjavascript/esmjsonwebassembly/syncwebassembly/asyncassetHookMap<SyncBailHook>
å¨ Generator å®ä¾å建ä¹åè°ç¨ãgeneratorOptions æ¯ module.parser ä¸å¯¹åºæ è¯ç¬¦æç©ºå¯¹è±¡çé项ã
é©ååæ°ï¼identifier
åè°åæ°ï¼generatorOptions
HookMap<SyncHook>
å¨ Generator å®ä¾å建ä¹åè°ç¨ã
é©ååæ°ï¼identifier
åè°åæ°ï¼generator generatorOptions
å¯è½çé»è®¤æ è¯ç¬¦ï¼
jsonwebassembly/syncwebassembly/asyncassetasset/sourceasset/resourceasset/inline