getSource(url, context, defaultGetSource)
注意:加载器 API 正在重新设计。 这个钩子可能会消失,或者它的签名可能会改变。 不要依赖下面描述的 API。
url
<string>context
<Object>format
<string>
defaultGetSource
<Function>- 返回: <Object>
source
<string> | <SharedArrayBuffer> | <Uint8Array>
getSource
钩子提供了一种方法来定义用于检索 ES 模块说明符的源代码的自定义方法。
这将允许加载器潜在地避免从磁盘读取文件。
/**
* @param {string} url
* @param {{ format: string }} context
* @param {Function} defaultGetSource
* @returns {Promise<{ source: !(string | SharedArrayBuffer | Uint8Array) }>}
*/
export async function getSource(url, context, defaultGetSource) {
const { format } = context;
if (Math.random() > 0.5) { // 一些条件。
// 对于部分或所有 URL,执行一些自定义逻辑来检索源。
// 总是返回 {source: <string|buffer>} 形式的对象。
return {
source: '...',
};
}
// 所有其他 URL 都遵循 Node.js。
return defaultGetSource(url, context, defaultGetSource);
}
Note: The loaders API is being redesigned. This hook may disappear or its signature may change. Do not rely on the API described below.
url
<string>context
<Object>format
<string>
defaultGetSource
<Function>- Returns: <Object>
source
<string> | <SharedArrayBuffer> | <Uint8Array>
The getSource
hook provides a way to define a custom method for retrieving
the source code of an ES module specifier. This would allow a loader to
potentially avoid reading files from disk.
/**
* @param {string} url
* @param {{ format: string }} context
* @param {Function} defaultGetSource
* @returns {Promise<{ source: !(string | SharedArrayBuffer | Uint8Array) }>}
*/
export async function getSource(url, context, defaultGetSource) {
const { format } = context;
if (Math.random() > 0.5) { // Some condition.
// For some or all URLs, do some custom logic for retrieving the source.
// Always return an object of the form {source: <string|buffer>}.
return {
source: '...',
};
}
// Defer to Node.js for all other URLs.
return defaultGetSource(url, context, defaultGetSource);
}