在预加载脚本中调用ipc通信的好方法吗?

问题描述 投票:0回答:1

我刚刚开始学习electron。我想知道在预加载脚本中使用ipcRenderer调用是否是一个好主意,即:

const sc = require('./StaticContent');
const dc = require('./DynamicContent');
const { ipcRenderer } = require('electron');

window.addEventListener('DOMContentLoaded', () => {
    document.getElementById('view').innerHTML = sc.getInfoPage();
    document.getElementById('menu-info').addEventListener('click', (evt) => {
        ipcRenderer.send('load-info');
    });


    ipcRenderer.on('get-view', (event, arg) => {
        document.getElementById('view').innerHTML = arg;
    });
});

我阅读的每个教程都使用外部js文件来管理ipcRenderer调用,甚至不打扰preload脚本。但是有效。

没有ipc调用,我也可以实现我想要的:

window.addEventListener('DOMContentLoaded', () => {
    document.getElementById('view').innerHTML = sc.getInfoPage();
    document.getElementById('menu-info').addEventListener('click', (evt) => {
        document.getElementById('view').innerHTML = sc.getInfoPage();
    });
});

哪个更好?我不知道有什么负面影响,我只想从一开始就学习最佳实践。

electron ipc preload ipcrenderer
1个回答
0
投票

是,您可以在预加载脚本中绝对使用ipcRenderer,并且可以看到该here的示例。

您是否最终应该取决于您的目标。

如果需要主进程执行某些操作,则必须使用ipc将消息从预加载脚本发送到主进程。如果您不需要任何主要过程,并且只需在运行预加载脚本的渲染器的上下文中执行代码,就可以在此处自由运行代码。

在您的情况下,仅在预加载脚本中执行所有DOM操作可能很有意义。仅向主进程发送消息,仅使其将消息发送回渲染器以执行您的get-view处理程序,这是无故的额外工作。

© www.soinside.com 2019 - 2024. All rights reserved.