Animation de chargement d’électrons

Est-ce que quelqu’un pourrait m’aider à mettre en place une animation de chargement pour mon application Electron? J’apprends cette nouvelle technologie et il serait bon de comprendre la bonne façon de le faire.

Je pense à quelque chose comme:

app.on('ready', () => { // show main content }) app.on('not-ready', () => { // show loading animation }) 

Pour autant que je sache, aucun événement n’est émis à partir de l’ app avant que le app ne soit ready (la seule exception est que le will-finish-launching disponible uniquement sur macOS).

En outre, vous ne pouvez pas ouvrir BrowserWindow avant que l’ app soit ready . Vous devez donc vraiment attendre.

Toutefois, si le chargement de la fenêtre de votre application principale est très lent, vous pouvez toujours ouvrir une “fenêtre de chargement” avant cela et les changer lorsque votre fenêtre principale est prête.

 const { app, BrowserWindow } = require('electron') app.on('ready', () => { let main = null let loading = new BrowserWindow({show: false, frame: false}) loading.once('show', () => { main = new BrowserWindow({show: false}) main.webContents.once('dom-ready', () => { console.log('main loaded') main.show() loading.hide() loading.close() }) // long loading html main.loadURL('http://spacecrafts3d.org') }) loading.loadURL('loding.html') loading.show() }) 

Vous pouvez utiliser win.on('ready-to-show') au lieu de win.webContents.on('dom-ready') partout si vous voulez éliminer le flash visuel (mais en perdant un peu de vitesse)


window.open()

Si vous voulez faire la même chose pour BrowserWindow ouvert dans le processus de rendu par window.open() , vous pouvez utiliser l’événement new-window de webContents si nativeWindowOpen a la valeur true

 main = new BrowserWindow({ webPreferences: { nativeWindowOpen: true } }) main.webContents.on('new-window', (event, url) => { // there are more args not used here event.preventDefault() const win = new BrowserWindow({show: false}) win.webContents.once('dom-ready', () => { win.show() loading.hide() // don't destroy in this case }) win.loadURL(url) loading.show() event.newGuest = win })