[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:
Samuel Attard 2018-09-20 13:43:26 +10:00 committed by GitHub
parent 73d1b76b54
commit 54ef906832
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 156 additions and 73 deletions

View file

@ -12,7 +12,7 @@ process.argv.splice(1, 1)
require('../common/reset-search-paths')
// Import common settings.
require('../common/init')
require('@electron/internal/common/init')
var globalPaths = Module.globalPaths
@ -37,9 +37,9 @@ const {
warnAboutInsecureCSP,
warnAboutAllowedPopups,
shouldLogSecurityWarnings
} = require('./security-warnings')
} = require('@electron/internal/renderer/security-warnings')
require('./web-frame-init')()
require('@electron/internal/renderer/web-frame-init')()
// Process command line arguments.
let nodeIntegration = 'false'
@ -77,26 +77,26 @@ if (preloadScript) {
if (window.location.protocol === 'chrome-devtools:') {
// Override some inspector APIs.
require('./inspector')
require('@electron/internal/renderer/inspector')
nodeIntegration = 'false'
} else if (window.location.protocol === 'chrome-extension:') {
// Add implementations of chrome API.
require('./chrome-api').injectTo(window.location.hostname, isBackgroundPage, window)
require('@electron/internal/renderer/chrome-api').injectTo(window.location.hostname, isBackgroundPage, window)
nodeIntegration = 'false'
} else if (window.location.protocol === 'chrome:') {
// Disable node integration for chrome UI scheme.
nodeIntegration = 'false'
} else {
// Override default web functions.
require('./override')
require('@electron/internal/renderer/override')
// Inject content scripts.
require('./content-scripts-injector')
require('@electron/internal/renderer/content-scripts-injector')
// Load webview tag implementation.
if (webviewTag === 'true' && process.guestInstanceId == null) {
require('./web-view/web-view')
require('./web-view/web-view-attributes')
require('@electron/internal/renderer/web-view/web-view')
require('@electron/internal/renderer/web-view/web-view-attributes')
}
}