将数据发送到渲染器进程

时间:2019-04-21 19:07:25

标签: node.js electron

我正在使用"electron": "^4.1.4",并且从sqlite3数据库通过knex获取数据。

我试图通过ipcMain调用发送数据。在我的main.js

下找到
const {
  app,
  BrowserWindow,
  ipcMain
} = require('electron')

// require configuration file
require('dotenv').config()

// database
const knex = require('./config/database')

// services
const {
  ScheduledContent
} = require('./service/ScheduledContent')

require('electron-reload')(__dirname);

let mainWindow

const contentService = new ScheduledContent(knex)
ipcMain.on('content-edit', async (e, args) => {
  console.log("content-edit - Backend");
  let res = await contentService.getAllContent()
  event.sender.send('content-edit-res', res)
})

function createWindow() {
  mainWindow = new BrowserWindow({
    width: 1000,
    height: 600,
    webPreferences: {
      nodeIntegration: true
    }
  })

  // and load the index.html of the app.
  mainWindow.loadFile('./public/index.html')

  mainWindow.on('closed', function () {
    mainWindow = null
  })
}

app.on('ready', createWindow)

app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') app.quit()
})

app.on('activate', function () {
  if (mainWindow === null) createWindow()
})

我的renderer.js如下所示:

const {
    ipcRenderer
} = require('electron')

console.log("loaded renderer.js 123")


document.addEventListener('DOMContentLoaded', pageLoaded);

function pageLoaded() {
    console.log('The page is loaded');
    ipcRenderer.send('content-edit', 'x')
}

ipcRenderer.on('content-edit-res', (event, arg) => {
    console.log(arg)
})

加载页面后,我试图在前端获取数据,然后我想将其附加到<table id="table1">中的index.html标签中

但是,前端没有任何数据。

有人建议我在做什么错吗?

感谢您的答复!

1 个答案:

答案 0 :(得分:1)

就目前而言,代码问题...

 // event in receive, not e... 
 ipcMain.on('content-edit', async (event, args) => {
   console.log("content-edit - Backend");
   let res = await contentService.getAllContent()
   event.sender.send('content-edit-res', res)
 })

但是,作为附加信息,您也可以使用窗口的webContents将数据发送到渲染器进程。

 const BrowserWindow = electron.BrowserWindow;
 let win = new BrowserWindow(<your configs>);
 win.webContents.send('message', 'Hello from main!');

您可以找到有用的信息here