Saltar al contenido principal

Sinopsis

Como utilizar Node.js y los APIs de Electrón.

All of Node.js's built-in modules are available in Electron and third-party node modules also fully supported as well (including the native modules).

Electrón además provee algunos módulos incorporados extra para desarrollar aplicaciones de escritorio nativas. Some modules are only available in the main process, some are only available in the renderer process (web page), and some can be used in either process type.

La regla básica es: si un módulo es GUI o relacionado a sistemas de bajo nivel, entonces solo puede estar disponible en el proceso principal. You need to be familiar with the concept of main process vs. renderer process scripts to be able to use those modules.

El scrip del proceso principal es como un script normal de Node.js:

const { app, BrowserWindow } = require('electron')
let win = null

app.whenReady().then(() => {
win = new BrowserWindow({ width: 800, height: 600 })
win.loadURL('https://github.com')
})

El renderer process no es diferente a una página web normal, excepto por la habilidad extra de usar módulos node si nodeIntegration está activada:

<!DOCTYPE html>
<html>
<body>
<script>
const fs = require('fs')
console.log(fs.readFileSync(__filename, 'utf8'))
</script>
</body>
</html>

Asignación de desestructuración

Respecto al 0.37, puedes usar asignación de desestruturación para hacer más fácil el uso de los módulos incorporados.

const { app, BrowserWindow } = require('electron')

let win

app.whenReady().then(() => {
win = new BrowserWindow()
win.loadURL('https://github.com')
})

Si necesitas el módulo electron completo, puedes requerirlo y luego usar la desestructuración para acceder a los módulos individuales desde electron.

const electron = require('electron')
const { app, BrowserWindow } = electron

let win

app.whenReady().then(() => {
win = new BrowserWindow()
win.loadURL('https://github.com')
})

Este es equivalente al siguiente código:

const electron = require('electron')
const app = electron.app
const BrowserWindow = electron.BrowserWindow
let win

app.whenReady().then(() => {
win = new BrowserWindow()
win.loadURL('https://github.com')
})