所以我知道这是有效的,因为我试过了,但它没有在任何地方记录,所以我问是否可以使用这种做法,而不用担心它将来会停止工作(电子和nodejs已知会打破从一个版本到另一个版本的东西)
这就是我所说的练习类型:
main.js
app.emit('did-something', param1, param2);
renderer.js(浏览器窗口)
const {app} = require('electron').remote;
app.on('did-something', (param1, param2) => {
$('#whatever').text(param1);
});
基本上我试图将所有不直接处理HTML的代码(如数据库交互)移动到main.js中,我想确保这是正确的方法。
另外,如果我使用自己的方法和属性扩展app对象,这样可以吗?
答案 0 :(得分:5)
主要流程几乎总是只用于创建BrowserWindows和访问电子API,这些API在文档中标记为只能通过主流程访问。
查看this article以了解主/渲染器与其用途之间差异的更多详细信息。 Chromium流程架构意味着主流程中的任何阻塞代码也会阻止渲染器。
您的所有应用代码都应该在渲染过程中,如果您正在执行长时间运行的过程,那么应该将这些过程强加到Web Workers或其他渲染器进程中。 electron-remote可以帮助您做到这一点。
如果您想在主要和渲染器流程之间进行通信,则应使用documented API's。