[RFC] perf: use an internal module resolver to improve require performance (#14633)
* perf: use an internal module resolver instead of relative requires * perf: memoize the results of getting exported Electron properties * perf: make internal module changes consistent across sandboxed / bundled files
This commit is contained in:
parent
73d1b76b54
commit
54ef906832
32 changed files with 156 additions and 73 deletions
|
@ -1,4 +1,4 @@
|
|||
const moduleList = require('../module-list')
|
||||
const moduleList = require('@electron/internal/sandboxed_renderer/api/module-list')
|
||||
|
||||
for (const {
|
||||
name,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
const ipcRenderer = require('../../renderer/api/ipc-renderer')
|
||||
const ipcRenderer = require('@electron/internal/renderer/api/ipc-renderer')
|
||||
|
||||
const v8Util = process.atomBinding('v8_util')
|
||||
const ipcNative = process.atomBinding('ipc')
|
||||
|
|
|
@ -3,32 +3,32 @@ const features = process.atomBinding('features')
|
|||
module.exports = [
|
||||
{
|
||||
name: 'crashReporter',
|
||||
load: () => require('../../common/api/crash-reporter')
|
||||
load: () => require('@electron/internal/common/api/crash-reporter')
|
||||
},
|
||||
{
|
||||
name: 'desktopCapturer',
|
||||
load: () => require('../../renderer/api/desktop-capturer'),
|
||||
load: () => require('@electron/internal/renderer/api/desktop-capturer'),
|
||||
enabled: features.isDesktopCapturerEnabled()
|
||||
},
|
||||
{
|
||||
name: 'ipcRenderer',
|
||||
load: () => require('./ipc-renderer')
|
||||
load: () => require('@electron/internal/sandboxed_renderer/api/ipc-renderer')
|
||||
},
|
||||
{
|
||||
name: 'isPromise',
|
||||
load: () => require('../../common/api/is-promise'),
|
||||
load: () => require('@electron/internal/common/api/is-promise'),
|
||||
private: true
|
||||
},
|
||||
{
|
||||
name: 'nativeImage',
|
||||
load: () => require('../../common/api/native-image')
|
||||
load: () => require('@electron/internal/common/api/native-image')
|
||||
},
|
||||
{
|
||||
name: 'remote',
|
||||
load: () => require('../../renderer/api/remote')
|
||||
load: () => require('@electron/internal/renderer/api/remote')
|
||||
},
|
||||
{
|
||||
name: 'webFrame',
|
||||
load: () => require('../../renderer/api/web-frame')
|
||||
load: () => require('@electron/internal/renderer/api/web-frame')
|
||||
}
|
||||
]
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
/* global binding, Buffer */
|
||||
const events = require('events')
|
||||
|
||||
process.atomBinding = require('../common/atom-binding-setup')(binding.get, 'renderer')
|
||||
process.atomBinding = require('@electron/internal/common/atom-binding-setup')(binding.get, 'renderer')
|
||||
|
||||
// The electron module depends on process.atomBinding
|
||||
const electron = require('electron')
|
||||
|
@ -41,7 +41,7 @@ const {
|
|||
preloadSrc, preloadError, process: processProps
|
||||
} = electron.ipcRenderer.sendSync('ELECTRON_BROWSER_SANDBOX_LOAD')
|
||||
|
||||
require('../renderer/web-frame-init')()
|
||||
require('@electron/internal/renderer/web-frame-init')()
|
||||
|
||||
// Pass different process object to the preload script(which should not have
|
||||
// access to things like `process.atomBinding`).
|
||||
|
@ -76,7 +76,7 @@ function preloadRequire (module) {
|
|||
|
||||
if (window.location.protocol === 'chrome-devtools:') {
|
||||
// Override some inspector APIs.
|
||||
require('../renderer/inspector')
|
||||
require('@electron/internal/renderer/inspector')
|
||||
}
|
||||
|
||||
if (binding.guestInstanceId) {
|
||||
|
@ -85,8 +85,8 @@ if (binding.guestInstanceId) {
|
|||
|
||||
if (!process.guestInstanceId && preloadProcess.argv.indexOf('--webview-tag=true') !== -1) {
|
||||
// don't allow recursive `<webview>`
|
||||
require('../renderer/web-view/web-view')
|
||||
require('../renderer/web-view/web-view-attributes')
|
||||
require('@electron/internal/renderer/web-view/web-view')
|
||||
require('@electron/internal/renderer/web-view/web-view-attributes')
|
||||
}
|
||||
|
||||
// Wrap the script into a function executed in global scope. It won't have
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue