Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

230
Vistas
¿Cómo usar la función webContents.send de electron.js en otro archivo de renderizado ipc?

Estoy tratando de separar la función IPC del archivo main.js en electron porque se vuelve demasiado largo

¿Cómo puedo usar este webContents.send en un archivo js diferente que no está en main.js?

 mainWindow.webContents.send("search",recordset.recordset)

muestra este error No se pueden leer las propiedades de undefined (leyendo 'webContents')

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La separación de preocupaciones será su prioridad número uno aquí. Para lograr esto, puede usar setters y getters .

Recuerde, cuando Node require por primera vez un módulo, también se almacena en caché. Usemos esta ventaja como una forma de gestión estatal.


Antes de separar/refactorizar su código, encontrará que su archivo main.js puede crecer hasta un tamaño enorme. El uso de técnicas como esta le permitirá dividir su código en segmentos de código de responsabilidad única fácilmente manejables y legibles.

Si aún no lo ha hecho, saquemos la construcción de su ventana principal del archivo mainWindow y la main.js en su propio archivo.

main.js (hilo principal)

 // Import the necessary Electron modules. const electronApp = require('electron').app; const electronBrowserWindow = require('electron').BrowserWindow; // Import the necessary Node modules. const nodePath = require('path'); // Import the necessary Application modules. const appMainWindow = require(nodePath.join(__dirname, 'main-window')); // Prevent garbage collection. let mainWindow = null; // Application is now ready to start. electronApp.on('ready', () => { mainWindow = appMainWindow.create(); }); // Re-activate Application when in macOS dock. electronApp.on('activate', () => { if (electronBrowserWindow.getAllWindows().length === 0) { appMainWindow.create(mainWindow); } }); // Close Application completely if not on macOS. electronApp.on('window-all-closed', () => { if (process.platform !== 'darwin') { electronApp.quit(); } });

Tener la administración del objeto mainWindow en su propio archivo separa nuestro código en fragmentos más legibles y manejables.

main-window.js (hilo principal)

 // Import the necessary Electron modules. const electronBrowserWindow = require('electron').BrowserWindow; // Define the main window. let mainWindow; // Create the main window. function create() { mainWindow = new electronBrowserWindow({ x: 0, y: 0, width: 800, height: 600, show: false, webPreferences: { nodeIntegration: false, contextIsolation: true, preload: nodePath.join(__dirname, 'preload.js') } }); // Load the main window. mainWindow.loadFile(nodePath.join(__dirname, 'main-window.html')) .then(() => { mainWindow.show(); }) return mainWindow; } // Get the main window object. function get() { return mainWindow; } // Export the publicly available functions. module.exports = {create, get};

Finalmente, en su archivo (o cualquier otro archivo) que requiera una referencia a su objeto mainWindow , solo require su archivo main-window.js y llame a la función get() .

any-file (hilo principal)

 // Import the necessary Node modules. const nodePath = require('path'); // Import the necessary Application modules. const appMainWindow = require(nodePath.join(__dirname, 'main-window')); // Lets use it. appMainWindow.get().webContents.send("search", recordset.recordset);
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda