2017-07-29 83 views
0

我發現很難理解如何在代碼中區分主進程和渲染器。電子 - 主進程與渲染進程

這裏是我的文件結構:

file structure

我想要寫在服務器端的方法,並調用它的前端側。

我應該在哪裏寫下它?在主或渲染過程中?

如果我在js文件夾中從上面的圖像中寫入方法,它會在主或渲染過程中考慮嗎?

+0

「服務器端」是什麼意思?你在某處運行服務器嗎?至於'js'文件夾中的JavaScript,這當然取決於您導入JavaScript的位置。 – smarx

+0

@smarx我有服務器,但電子有它的已知節點根據我的研究(糾正我如果我錯了)。你能向我解釋一下如何讓JavaScript方法在主進程中運行,以及如何讓它在渲染進程中運行? –

+0

請嘗試https://medium.com/@ccnokes/deep-dive-into-electrons-main-and-renderer-processes-7a9599d5c9e2? – smarx

回答

0

我假設你的main.js文件是你創建BrowserWindow的地方。這是你的主要過程,並且是你編寫服務器端方法的地方。

在你的主要過程中,您可以創建一個使用ipcMain無論是異步或同步像這樣的方法:

// In main process. 
const {ipcMain} = require('electron'); 
ipcMain.on('asynchronous-message', (event, arg) => { 
    console.log(arg); // prints "ping" 
    event.sender.send('asynchronous-reply', 'pong'); 
}); 

ipcMain.on('synchronous-message', (event, arg) => { 
    console.log(arg); // prints "ping" 
    event.returnValue = 'pong'; 
}); 

然後,您可以調用一個渲染進程(JS中鉻實例中運行),該方法如下所示:

// In renderer process (web page). 
const {ipcRenderer} = require('electron'); 
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')); // prints "pong" 

ipcRenderer.on('asynchronous-reply', (event, arg) => { 
    console.log(arg); // prints "pong" 
}); 
ipcRenderer.send('asynchronous-message', 'ping'); 

在上面顯示的js文件夾中編寫方法將成爲渲染過程的一部分。

希望這會有所幫助!