javascript / expert
Snippet
Benutzerdefinierte ESM-Loader für Laufzeit-Modulinstrumentierung
Node.js ermöglicht die Anpassung der ES-Modulauflösung und des Ladevorgangs über Loader-Hooks. Dies ermöglicht On-the-fly-Transformationen (wie TypeScript-Kompilierung) oder Sicherheits-Sandboxing, indem jede 'import'-Anweisung in der Anwendung abgefangen wird.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
// loader.mjsexport async function load(url, context, nextLoad) {const result = await nextLoad(url, context);if (url.endsWith('.ts')) {return {format: 'module',shortCircuit: true,source: transformCode(result.source)};}return result;}
nodejs
Erklärung
1
export async function load(url, context, nextLoad)
Der Hook, der von Node.js aufgerufen wird, wenn ein Modul in die Quelle geladen werden muss.
2
const result = await nextLoad(url, context);
Ruft den Standard-Loader oder den nächsten Hook auf, um die Rohquelle zu erhalten.
3
shortCircuit: true,
Informiert Node.js, dass dieser Hook die Anfrage bearbeitet hat und keine weiteren Hooks nötig sind.
4
source: transformCode(result.source)
Wendet benutzerdefinierte Logik auf den Quellcode an, bevor dieser von V8 geparst wird.