He pasado algunas horas jugando con Electron y he observado que toma constantemente más de 2,5 segundos dibujar un archivo html trivial en la pantalla. La línea de tiempo es más o menos la siguiente:
ready ; creamos una ventana usando new BrowserWindow()Configuré un repositorio con mi código, que se deriva de los documentos de inicio rápido de Electron.
Con respecto a mi máquina, estoy ejecutando Windows 10 en un ThinkPad T460 de 2016 con SSD y suficiente memoria.
Enviar una aplicación que muestra una ventana en blanco durante tanto tiempo al iniciarse no es posible para mí. Supongo que la mayoría de las personas que desarrollan aplicaciones Electron piensan de manera similar. De ahí mi primera pregunta: ¿estoy haciendo algo mal? ¿O es este el tiempo de carga esperado para una aplicación de Electron trivial?
Suponiendo que este sea un comportamiento normal, ¿cuál es la forma común de abordar este problema? Algunas ideas vienen a la mente:
ready-to-show ), de modo que no se muestre ninguna ventana en blanco. Esto no es lo ideal, ya que significa que el usuario no recibe ningún comentario de que la aplicación se está cargando.Dado que este debe ser un problema común, espero que la comunidad haya encontrado soluciones estándar. Me alegraría si alguien me puede señalar en la dirección correcta.
¿Qué sucede si oculta su ventana hasta que esté lista para mostrarse, luego muestra su ventana y, mientras su ventana está oculta, muestra una rueda giratoria de carga?
Primero solo muestre su ventana principal hasta que esté lista:
var mainWindow = new BrowserWindow({ show: false }); mainWindow.webContents.once('did-finish-load', function () { mainWindow.show(); loadingWindow.close(); });Mientras tanto, muestra un spinner de carga:
var loadingWindow = new BrowserWindow({ width: 200, height: 200, transparent: (process.platform != 'linux'), // Transparency doesn't work on Linux. resizable: false, frame: false, alwaysOnTop: true, hasShadow: false, title: "Loading..." }); loadingWindow.loadURL('file://' + __dirname + '/loadingAnimation.gif');Windows Defender está provocando la ralentización, por lo que no se trata de un problema de Electron.
Resulta que la protección en tiempo real de Windows Defender hace que el inicio dure mucho más de lo necesario. Después de desactivar la protección en tiempo real, logramos un rendimiento aceptable:
Esto significa que la opción 1 de mis soluciones propuestas (que muestra una pantalla de inicio) debería funcionar bastante bien para aplicaciones de carga lenta.
Lo único que queda es descubrir cómo resolver el problema de Windows Defender. Con ese propósito, he hecho una nueva pregunta .