perf: lazily load some modules in sandbox mode (#23856)
This commit is contained in:
parent
95037a7d2a
commit
c6f4573a13
1 changed files with 12 additions and 4 deletions
|
@ -43,13 +43,16 @@ process.isRemoteModuleEnabled = isRemoteModuleEnabled;
|
||||||
// The electron module depends on process.electronBinding
|
// The electron module depends on process.electronBinding
|
||||||
const electron = require('electron');
|
const electron = require('electron');
|
||||||
|
|
||||||
const loadedModules = new Map([
|
const loadedModules = new Map<string, any>([
|
||||||
['electron', electron],
|
['electron', electron],
|
||||||
['electron/common', electron],
|
['electron/common', electron],
|
||||||
['electron/renderer', electron],
|
['electron/renderer', electron],
|
||||||
['events', events],
|
['events', events]
|
||||||
['timers', require('timers')],
|
]);
|
||||||
['url', require('url')]
|
|
||||||
|
const loadableModules = new Map<string, Function>([
|
||||||
|
['timers', () => require('timers')],
|
||||||
|
['url', () => require('url')]
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// ElectronApiServiceImpl will look for the "ipcNative" hidden object when
|
// ElectronApiServiceImpl will look for the "ipcNative" hidden object when
|
||||||
|
@ -109,6 +112,11 @@ function preloadRequire (module: string) {
|
||||||
if (loadedModules.has(module)) {
|
if (loadedModules.has(module)) {
|
||||||
return loadedModules.get(module);
|
return loadedModules.get(module);
|
||||||
}
|
}
|
||||||
|
if (loadableModules.has(module)) {
|
||||||
|
const loadedModule = loadableModules.get(module)!();
|
||||||
|
loadedModules.set(module, loadedModule);
|
||||||
|
return loadedModule;
|
||||||
|
}
|
||||||
throw new Error(`module not found: ${module}`);
|
throw new Error(`module not found: ${module}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue