Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获得;简单的;电子战中的远程目标_Javascript_Electron - Fatal编程技术网

Javascript 获得;简单的;电子战中的远程目标

Javascript 获得;简单的;电子战中的远程目标,javascript,electron,Javascript,Electron,当我在electron中调用远程函数时,结果总是充斥着getter和setter。我想我明白这是为什么,但我希望能够得到简单的对象 我目前的解决方案是: 有没有更优雅的方法来实现这一点?如评论中所述,我建议直接在渲染器中使用“桥接器”;这样,您根本不需要在主进程和渲染器进程之间传递其数据 话虽如此,如果另一个需求要求仅在主进程中加载“桥接”模块,同时仍然从渲染器访问其数据,我建议使用Electron的“ipc”模块 例如,在主进程中,您可以执行类似的操作(假设变量win是您希望与之通信的渲染器

当我在electron中调用远程函数时,结果总是充斥着
getter
setter
。我想我明白这是为什么,但我希望能够得到简单的对象

我目前的解决方案是:
有没有更优雅的方法来实现这一点?如评论中所述,我建议直接在渲染器中使用“桥接器”;这样,您根本不需要在主进程和渲染器进程之间传递其数据

话虽如此,如果另一个需求要求仅在主进程中加载“桥接”模块,同时仍然从渲染器访问其数据,我建议使用Electron的“ipc”模块

例如,在主进程中,您可以执行类似的操作(假设变量
win
是您希望与之通信的渲染器进程窗口的引用):

在渲染器进程中(与
win
关联):


您需要通过远程“桥接”的具体原因是什么?通常,您可以直接在渲染器过程中需要任何模块;如果要访问仅在主进程中可用的电子模块或主进程已加载的模块的特定实例,则仅需要远程模块。除非您在主进程中加载“bridge”以便只加载一次,然后让多个窗口访问它,否则您可能只需要在渲染器中直接使用它,因此根本不需要处理远程对象。我有一个python进程正在运行,使用
child\u process.spawn
。它应该在
渲染器和主进程中都可用。我明白了。您是否需要从Main和Renderer访问相同的python进程?还是只需要从渲染器访问它?在后一种情况下,只需直接使用“桥”,因为不需要通过远程连接。否则,您将不得不求助于某种IPC;事实上,Electron的
ipcMain
ipcRenderer
可能比使用
remote
提供更好的解决方案。是的,这就是我最终得到的结果。但我仍然很好奇,是否有更好的办法来解决这个具体问题。
import {remote} from 'electron'

const bridge = remote.require('bridge')  // This is a little script I create for talking to a python process. Over stdin/stdout i.e. pipes.

bridge.on('fileTreeUpdate', (data) => {
    myDataStore.update(JSON.parse(JSON.stringify(data.tree))
})
import bridge from 'bridge'

bridge.on('fileTreeUpdate', data => {
  // assuming win {BrowserWindow} has already been initialized
  win.webContents.send('bridge:fileTreeUpdate', data) 
})
import ipcRenderer from 'electron'

ipcRenderer.on('bridge:fileTreeUpdate', (event, data) => {
  myDataStore.update(data.tree)
})